![](/img/trans.png)
[英]Android - Retrieving data from SQLite database, based on onclick listview
[英]Obstacle for retrieving data from SQLite database into a ListView(having TextViews) in Android:
我想從db檢索數據到某些textviews然后將這些textvies放入listview時遇到一些問題,讓我解釋一下我的數據庫中有兩列,例如date和head,我想將它們檢索到它們的每個textviews中。並將這些textvie放入列表視圖中。我知道這對其他人來說可能是一個愚蠢的問題,但是我是該領域的新手。我對SimpleCursorAdapter有所了解,但不知道如何在哪里使用它。可以通過此方法解決。所以請指導我。
我的班級::我為database.MyArrayAdapter類創建了DBAdapter類。 一個主類稱為Head.java。
DBAdapter.java
public class DBAdapter {
//EditText mHead;
public static final String KEY_ROWID="_id";
public static final String KEY_DATE="date";
public static final String KEY_HEAD="head";
private static final String TAG="DBAdapter";
private static final String DATABASE_NAME="accounting";
private static final String DATABASE_TABLE="accounts";
private static final int DATABASE_VERSION=1;
private static final String DATABASE_CREATE=
"create table accounts (_id integer primary key autoincrement," +
"date datetime not null, head text not null);";
private final Context context;
private DataBaseHelper DBHelper;
private SQLiteDatabase db;
public DBAdapter(Context ctx){
this.context=ctx;
DBHelper=new DataBaseHelper(context);
}
private static class DataBaseHelper extends SQLiteOpenHelper {
DataBaseHelper(Context context){
super(context,DATABASE_NAME,null,DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
try {
db.execSQL(DATABASE_CREATE);
}catch(SQLException e){
e.printStackTrace();
}
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
Log.w(TAG, "Updrading database from version "+oldVersion+" to "+newVersion+"," +
"which will destroy all old data");
db.execSQL("drop table if exists accounts");
onCreate(db);
}
}
public DBAdapter open() throws SQLException{
db=DBHelper.getWritableDatabase();
return this;
}
public void close(){
DBHelper.close();
}
**//--insert contact in the database--**
public long insertContact(String date,String head)
{
ContentValues initialvalue=new ContentValues();
initialvalue.put(KEY_DATE, date);
initialvalue.put(KEY_HEAD, head);
return db.insert(DATABASE_TABLE, null, initialvalue);
}
//--delete a particular contact--
public boolean deleteContact(long rowId){
return db.delete(DATABASE_TABLE, KEY_ROWID + "=" + rowId, null)>0;
}
//--Retrieving all the contacts--
public Cursor getAllContacts(){
return db.query(DATABASE_TABLE, new String[] {KEY_ROWID, KEY_DATE,KEY_HEAD}, null, null, null, null,null);
}
//--Retrieve a particular contact--
public Cursor getContact(long rowId)throws SQLException{
Cursor mCursor=
db.query(true, DATABASE_TABLE, new String[] {KEY_ROWID,KEY_DATE,KEY_HEAD},
KEY_ROWID + "="+ rowId, null, null, null,
null, null);
if(mCursor != null){
mCursor.moveToFirst();
}
return mCursor;
}
//--update a contact--
public Boolean updateContact(long rowId,String date,String head){
ContentValues args=new ContentValues();
args.put(KEY_DATE, date);
args.put(KEY_HEAD, head);
return db.update(DATABASE_TABLE, args, KEY_ROWID + "=" +rowId,null)>0;
}
}
MyArrayAdapter.java
public class MyArrayAdapter extends ArrayAdapter<Object>{
private final Context context;
private final String[] values;
//@SuppressWarnings("unchecked")
public MyArrayAdapter(Context context,String[] values){
super(context,R.layout.list_things,values);
this.context=context;
this.values=values;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
//return super.getView(position, convertView, parent);
LayoutInflater inflate=(LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View rowview=inflate.inflate(R.layout.list_things, parent, false);
TextView mDate=(TextView)rowview.findViewById(R.id.tvdate);
TextView mHead=(TextView)rowview.findViewById(R.id.tvhead);
mDate.setText(values[position]);
mHead.setText(values[position]);
return rowview;
}
}
最后我想做所有事情的班主任
頭文件
public class Head extends ListActivity {
String date = "";
String head;
TextView display;
EditText headname;
ListView list;
LayoutInflater inflate;
Layout layout;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.head);
display=(TextView)findViewById(R.id.tvCurrentDate);
display.setText(date);
// Intent intent=new Intent();
DBAdapter db=new DBAdapter(this);
SimpleCursorAdapter adapter=new SimpleCursorAdapter(Head.this, R.layout.list_things, null, null, null);
//Cursor cursor=getContentResolver().query("/data/data/com.crypto.ranjit/DBAdapter",
//new String []{db., selection, selectionArgs, sortOrder)
Bundle b = getIntent().getExtras();
if (b != null) {
date = b.getString("date");
}
Button btnSave = (Button) findViewById(R.id.btnSave);
btnSave.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
headname=(EditText)findViewById(R.id.etHeadname);
date=display.getText().toString();
head=headname.getText().toString();
DBAdapter dba = new DBAdapter(Head.this);
dba.open();
long id = dba.insertContact(date, head);
// id=dba.insertContact(head, date);
dba.close();
}
});
//DBAdapter db=new DBAdapter(Head.this);
//db.open();
}
}
這里有些愚蠢的錯誤使我感到困惑。
解決方案:1:通過Head.java中定義的靜態值填充文本視圖。 2:使用ArrayList <HashMap <String,String>>檢索數據並填寫適配器類。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.