Java 使用rowID从sqlite数据库向Textview添加文本
我有一个列表视图,它由我的数据库填充。现在在Java 使用rowID从sqlite数据库向Textview添加文本,java,android,sqlite,Java,Android,Sqlite,我有一个列表视图,它由我的数据库填充。现在在OnItemClickListener中,我将行id传递给下一个活动。在那个活动中,我有两个文本视图,我想从我的数据库中在这些文本视图中添加文本 作为一个初学者,我被困在这里,我现在该怎么办?如果要传递给下一个活动的id(而不是列表VIW中项目的位置)是主键,或者它以某种方式映射到数据库表,那么您只需使用where子句查询数据库即可从表中获取特定行 另一个简单的解决方案可能是将数据从同一个活动传递到另一个活动,而不是对数据库表进行另一次查询。只需将行i
OnItemClickListener
中,我将行id传递给下一个活动。在那个活动中,我有两个文本视图,我想从我的数据库中在这些文本视图中添加文本
作为一个初学者,我被困在这里,我现在该怎么办?如果要传递给下一个活动的id(而不是列表VIW中项目的位置)是主键,或者它以某种方式映射到数据库表,那么您只需使用where子句查询数据库即可从表中获取特定行
另一个简单的解决方案可能是将数据从同一个活动传递到另一个活动,而不是对数据库表进行另一次查询。只需将行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")));
}
}
}
});
SqliteDatabase mySqlLiteDatabase;
视图父视图this=(线性布局)充气器充气(R.layout.list\u视图);
lvDatabase=(ListView)parentThis.findviewbyd(R.id.ListView);
setAdapter(字符串[]列出来自\u数据库的\u项的\u);
lvDatabase.setOnItemClickListener(新的OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
sql=“从my_数据库中选择文本,其中_id=“+id;
mySqlLiteDatabase.openDatabase(yourDatabasePath,null,SQLiteDatabase.OPEN\u READWRITE);
游标c=mySqlLiteDatabase.rawquery(sql);
TextView TextView=(TextView)parentThis.findViewById(R.id.mytextview);
如果(c!=null){
如果(c.moveToFirst()){
setText(c.getString(c.getColumnIndex(“Text”));
}
}
}
});
希望您的数据库表中有一个标识列(\u id
)通过查询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;
}
public ArrayList getAllNumbers(){
ArrayList标签=新的ArrayList();
//选择所有查询
String selectQuery=“SELECT*FROM”+表格\联系人;
SQLiteDatabase db=this.getReadableDatabase();
Cursor Cursor=db.rawQuery(selectQuery,null);
if(cursor.moveToFirst()){
做{
字符串编号=cursor.getString(1);
标签。添加(编号);
}while(cursor.moveToNext());
}
//闭合连接
cursor.close();
db.close();
//退回标签
退货标签;
}
然后在listview的项目单击时获取它,并将其传递给另一个活动
@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);
}
@覆盖
公共布尔值长单击(AdapterView父级,
最终视图,最终整型位置,长arg3){
title=view.getTag(R.string.title).toString();
意图-意图=新意图(活动a.this,
活动b类);
startActivity(意图合成);
}
请澄清问题,并包括您可以使用的任何代码。没有代码,我们就不知道发生了什么!我想是我们的,谢谢!:)