使用SimpleCursorAdapter显示ListView中的项目文本

时间:2014-04-23 18:15:49

标签: android listview simplecursoradapter

如何使用SimpleCursorAdaptor显示ListView中的项目文本? 这是我的代码。

Cursor allTaskcursor = databaseHelper.getAllTasks();
String[] from = {"name", "date"};
int[] to = new int[] {android.R.id.text1, android.R.id.text2};
SimpleCursorAdapter cursorAdapter = new SimpleCursorAdapter(context, android.R.layout.simple_list_item_2, allTaskcursor, from, to, CursorAdapter.FLAG_REGISTER_CONTENT_OBSERVER);
allTaskListView.setAdapter(cursorAdapter);

getAllTask​​s()返回一个游标,其中date是一个Integer值(例10),显示在 android.R.id.text2 中。我想更改该文本(例如“10天”)。

2 个答案:

答案 0 :(得分:0)

如果您想要更新单个列表项并且您知道项目的index,则可以在getChildAt(int)上致电ListView以获取视图并将其更新为 -

TextView text2 = (TextView) v.findViewById(R.id.text2);
text2.setText("Updated Text");

或者,如果要更新数组中的所有值,可以更新数组并调用适配器上的notifyDataSetChanged以反映更新的值。

答案 1 :(得分:0)

SimpleCursorAdapter.ViewBinder 完成了这项工作。回答here后,我将代码更改为..

Cursor allTaskcursor = databaseHelper.getAllTasks();
    String[] from = {"name", "date"};
    int[] to = new int[] {android.R.id.text1, android.R.id.text2};
    SimpleCursorAdapter cursorAdapter = new SimpleCursorAdapter(context, android.R.layout.simple_list_item_2, allTaskcursor, from, to, CursorAdapter.FLAG_REGISTER_CONTENT_OBSERVER);
    cursorAdapter.setViewBinder(new SimpleCursorAdapter.ViewBinder() {
        @Override
        public boolean setViewValue(View view, Cursor cursor, int columnIndex) {
            if (view.getId() == android.R.id.text2) {
                int getIndex = cursor.getColumnIndex("date");
                int date = cursor.getInt(getIndex);
                TextView dateTextView = (TextView) view;
                dateTextView.setText(date + " days");
                return true;
            }
            return false;
        }
    });
    allTaskListView.setAdapter(cursorAdapter);