제목으로 조각에 사용자 정의 행과 함께 listview를 만들고 싶습니다. 아래 내 코드.조각 안드로이드에 사용자 정의 목록보기 만들기
다음은 listfragment로 확장 된 내 조각 클래스입니다. m이 목록보기에서 어댑터를 설정하는 방법에 대해 혼란스러워합니다. 내 코드는 아래와 같습니다.
public class QuoteHelper extends SQLiteOpenHelper{
private static final String DATABASE_PATH="/data/data/com.my.quote/databases/";
private static final String DATABASE_NAME="store.db";
private static final int SCHEMA_VERSION=1;
private static final String TABLE_NAME="quotes";
private static final String TABLE_NAME_CAT="categories";
private static final String COLUMN_ID="_id";
private static final String COLUMN_TITLE="body";
private static final String COLUMN_CAT="name";
public static int i;
//private static final String COLUMN_CAT="4";
public SQLiteDatabase dbsqlite;
private final Context mycontext;
public QuoteHelper(Context context) {
super(context,DATABASE_NAME,null,SCHEMA_VERSION);
this.mycontext=context;
// TODO Auto-generated constructor stub
}
@Override
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
}
public void createDatabase(){
createDB();
}
private void createDB(){
boolean dbExist = DBExists();
if(!dbExist){
this.getReadableDatabase();
copyDBFromResources();
}
}
private boolean DBExists() {
SQLiteDatabase db = null;
try{
String databasePath = DATABASE_PATH + DATABASE_NAME;
db = SQLiteDatabase.openDatabase(databasePath, null,
SQLiteDatabase.OPEN_READWRITE);
db.setLocale(Locale.getDefault());
db.setLockingEnabled(true);
db.setVersion(1);
}catch(SQLiteException e){
Log.e("SqlHelper","database not found");
}
if(db != null){
db.close();
}
return db != null ? true : false;
}
private void copyDBFromResources() {
InputStream inputStream = null;
OutputStream outputStream = null;
String dbFilePath = DATABASE_PATH + DATABASE_NAME;
try{
inputStream = mycontext.getAssets().open(DATABASE_NAME);
outputStream = new FileOutputStream(dbFilePath);
byte[] buffer = new byte[1024];
int length;
while((length = inputStream.read(buffer))> 0){
outputStream.write(buffer,0,length);
}
outputStream.flush();
outputStream.close();
inputStream.close();
}catch(IOException e){
throw new Error("problem copying databse");
}
}
public void openDataBase() throws SQLException{
String mypath = DATABASE_PATH+DATABASE_NAME;
dbsqlite = SQLiteDatabase.openDatabase(mypath, null,
SQLiteDatabase.OPEN_READWRITE);
}
@Override
public synchronized void close(){
if(dbsqlite != null){
dbsqlite.close();
}
super.close();
}
public Cursor getcursor(int a){
if(a==0){
SQLiteQueryBuilder querybuilder = new SQLiteQueryBuilder();
querybuilder.setTables(TABLE_NAME_CAT);
String[] asCloumsToReturn = new String[] {COLUMN_ID,COLUMN_CAT};
Cursor mcursor = querybuilder.query(dbsqlite, asCloumsToReturn, null, null, null, null, null);
return mcursor;
}
else{
int i = a;
SQLiteQueryBuilder querybuilder = new SQLiteQueryBuilder();
querybuilder.setTables(TABLE_NAME);
String[] asCloumsToReturn = new String[] {COLUMN_ID,COLUMN_TITLE};
String column ="category_id ="+ i;
Cursor mcursor = querybuilder.query(dbsqlite, asCloumsToReturn, column, null, null, null, null);
return mcursor;
}
}
public String getName(Cursor c){
return(c.getString(1));
}
public Cursor getDetailByTerm(String id) {
String[] args={id};
return(getReadableDatabase()
.rawQuery("SELECT _id, body FROM quotes WHERE _id=?",
args));
}
public Cursor getDetailsByCategory(String id){
String[] args={id};
return(getReadableDatabase()
.rawQuery("SELECT _id, body from quotes WHERE category_id = ?", args)
);
}
}
까지 실행되지 않습니다 당신이 ... 완료! Thnk .. !! m Eclipse는 startmanaging cursor (ourcursor) 아래에 여전히 빨간 곡선을 표시합니다 –
무슨 오류가 있습니까 ??? – Piyush