SimpleCursorAdapter
プロジェクトのListViewのカスタムに画像ボタンを追加しようとしていますが、1つのフィールドの値を繰り返して完全にランダムにするという問題が1つあります。
これはそのコードです:
public class MyCursorAdapter extends SimpleCursorAdapter {
public MyCursorAdapter(Context context, int layout, Cursor c, String[] from, int[] to) {
super(context, layout, c, from, to);
}
@Override
public void bindView(View view, Context context, Cursor cursor) {
super.bindView(view, context, cursor);
final Context t = context;
final Cursor c = cursor;
ImageButton delimageButton = (ImageButton)view.findViewById(R.id.deletebutton);
delimageButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
Toast.makeText(t,
"Delete ID: " + c.getInt(c.getColumnIndex(MyDBAdapter.KEY_ID)), Toast.LENGTH_SHORT).show();
}
});
if(cursor.getLong(cursor.getColumnIndex(MyDBAdapter.KEY_OWNID))>0)
{
TextView own = (TextView)view.findViewById(R.id.ownInfo);
own.setText("OWN");
}
else
{
TextView own = (TextView)view.findViewById(R.id.ownInfo);
own.setText("");
}
}
}
ここで、delimageButtonを押すListView
と、現在のビューにある1つのレコード(行)のランダムなIDが表示されます(表示できますが、正しいIDではありません)。たとえば、画面に5行のように表示され、ボタンの1つを押すと、他の行(5つのうちの1つ)のIDが取得されますが、(ほとんどの場合)押したこの行は取得されません。この独自のTextViewにはいくつかのトリックがあったことを覚えていますが、ここにどのように配置できるかわかりません。
では、正しいIDを表示する方法を教えてください。
喜んでお手伝いさせていただきます。
編集
呼び出しと一緒にListViewを設定する責任があるコード全体がありますMyCursorAdapter
:
private void refreshList() {
mySQLiteAdapter = new MyDBAdapter(this);
mySQLiteAdapter.open();
String[] columns = { MyDBAdapter.KEY_TITLE, MyDBAdapter.KEY_GENRE,
MyDBAdapter.KEY_OWNID, MyDBAdapter.KEY_ID };
Cursor contentRead = mySQLiteAdapter.getAllEntries(false, columns,
null, null, null, null, MyDBAdapter.KEY_TITLE, null);
startManagingCursor(contentRead);
Log.d(TAG, Integer.toString(contentRead.getCount()));
MyCursorAdapter adapterCursor = new MyCursorAdapter(this,
R.layout.my_row, contentRead, columns, new int[] {
R.id.rowTitle, R.id.detail });
this.setListAdapter(adapterCursor);
mySQLiteAdapter.close();
}
明確にするために、アクティビティはListActivity
です。