【发布时间】:2011-12-05 10:43:47
【问题描述】:
所以我有一个ListView(使用ListActivity),我从SQLiteDatabase 填充。我正在尝试将行的 ID (PK) 附加到视图,以便每个列表项的 onListItemClick 可以使用该 ID 执行操作。
我读过可以使用setTag 将任意数据设置为View 并使用getTag 检索(我实际上还没有成功完成这项工作,所以这可能是问题所在)。这是我正在使用的精简版(为了简单/简洁):
public class Favorites extends ListActivity {
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
FavoritesDB db = FavoritesDB.getInstance(this);
Cursor c = db.fetchFavorites();
startManagingCursor(c);
String[] columns = new String[] { "_id" };
int[] to = new int[] { R.id.word };
SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, R.layout.favorite, c, columns, to);
adapter.setViewBinder(new SimpleCursorAdapter.ViewBinder() {
public boolean setViewValue(View view, Cursor cursor, int columnIndex) {
view.setTag(cursor.getInt(0));
return true;
}
});
setListAdapter(adapter);
}
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
Object wordID = v.getTag();
Toast.makeText(getBaseContext(), "ID=" + wordID, 1).show();
}
}
ListView 正在被填充,Toast 确实出现了,但它始终是 "ID=null",所以显然 ID 没有在 ViewBinder 调用 setTag 中设置(或者不是t 正在使用getTag 检索属性。
【问题讨论】:
-
onListItemClick,我希望能够处理分配给列表项的任意数据(在此示例中,分配数据的 SQLite 行的 ID(主键))。
标签: android android-listview simplecursoradapter android-viewbinder