使用rowID从sqlite数据库将文本添加到Textview中

时间:2015-05-28 20:17:33

标签: java android sqlite

我的列表视图由我的数据库填充。现在在OnItemClickListener我将行ID传递给下一个Activity。在该活动中,我有两个文本视图,我想在我的数据库中的文本视图中添加文本。

作为初学者,我被困在这里,我现在该怎么办?

3 个答案:

答案 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);

}