如何使用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);
getAllTasks()返回一个游标,其中date是一个Integer值(例10),显示在 android.R.id.text2 中。我想更改该文本(例如“10天”)。
答案 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);