ListView
(ListActivity
を使用)をSQLiteDatabase
から移入しています。私はビューの行のID(PK)を添付しようとしているので、各リスト項目のonListItemClick
、私はそのIDで物事を行うことができます。SimpleCursorAdapterとViewBinder - データをリストビューアイテムにバインドしてクリック時に取得する
私は、任意のデータが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
の呼び出しで設定されています(または、getTag
のプロパティが取得されていません)。
あなたは何をしようとしていますか:あなたが設定した同じビューのタグを受け取ることを確認する必要がありますか? – confucius
onListItemClick、リスト項目(この例では、データを割り当てたSQLite行のID(主キー))に割り当てられた任意のデータで作業する必要があります。 – momo