我的列表视图由我的数据库填充。现在在OnItemClickListener
我将行ID传递给下一个Activity
。在该活动中,我有两个文本视图,我想在我的数据库中的文本视图中添加文本。
作为初学者,我被困在这里,我现在该怎么办?
答案 0 :(得分:0)
如果您传递给下一个活动的id(不是listviw中项目的位置)是主键,或者它以某种方式映射到您的数据库表,那么您可以使用where子句查询数据库以获取表中的特定行。
另一个简单的解决方案可能是将数据从同一个活动传递到意图上的另一个活动(如果它们是一些小的),而不是对数据库表进行另一个查询。
答案 1 :(得分:0)
只需将行ID传递给数据库:
SqliteDatabase mySqlLiteDatabase;
View parentThis = (LinearLayout)inflater.inflate(R.layout.list_view);
lvDatabase = (ListView)parentThis.findViewById(R.id.listview);
lvDatabase.setAdapter(String[] list_Of_Items_From_Database);
lvDatabase.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
sql = "Select text from my_database where _id=" + id;
mySqlLiteDatabase.openDatabase(yourDatabasePath,null,SQLiteDatabase.OPEN_READWRITE);
Cursor c = mySqlLiteDatabase.rawquery(sql);
TextView textView = (TextView)parentThis.findViewById(R.id.mytextview);
if (c !=null) {
if (c.moveToFirst()) {
textView.setText(c.getString(c.getColumnIndex("Text")));
}
}
}
});
希望您的数据库表中包含一个标识列(_id
)
答案 2 :(得分:0)
通过查询到db中传递数组中的所有数据,然后在listView中显示它。
public ArrayList<String> getAllNumbers(){
ArrayList<String> labels = new ArrayList<String>();
// Select All Query
String selectQuery = "SELECT * FROM " + TABLE_CONTACTS;
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.rawQuery(selectQuery, null);
if (cursor.moveToFirst()) {
do {
String number=cursor.getString(1);
labels.add(number);
} while (cursor.moveToNext());
}
// closing connection
cursor.close();
db.close();
// returning lables
return labels;
}
然后在列表视图的项目点击上获取它并将其传递给另一个活动。
@Override
public boolean onItemLongClick(AdapterView<?> parent,
final View view, final int position, long arg3) {
title = view.getTag(R.string.title).toString();
Intent intent_compose = new Intent(ActivityA.this,
ActivityB.class);
startActivity(intent_compose);
}