0
我創建了一個自定義SimpleCursorAdapter,因爲我需要每行一個文本和2個按鈕。創建自定義SimpleCursorAdapter
如果我點擊一個按鈕,他應該調用Activity Lektion。 在這個Lektion中,他應該知道從哪個Button調用過來的,所以我想在onClickEvent中發送Lektion的id作爲一個Bundle。
但這並不工作,它只是保存了我總是最後一個ID ..
我怎樣才能做到這一點?
public class LektionenCursorAdapter extends SimpleCursorAdapter{
private Cursor c;
private Context context;
private Bundle bundle;
public LektionenCursorAdapter(Context context, int layout, Cursor c, String[] from, int[] to) {
super(context, layout, c, from, to);
this.c = c;
this.context = context;
}
public View getView(int pos, View inView, ViewGroup parent){
if(inView == null){
inView = View.inflate(context, R.layout.lektionenoverview_entry, null);
}
View row = inView;
this.c.moveToPosition(pos);
String id = this.c.getString(this.c.getColumnIndex("_id"));
Log.i("Cursor", id);
String description = this.c.getString(this.c.getColumnIndex("Description"));
String info = this.c.getString(this.c.getColumnIndex("Info"));
String test = this.c.getString(this.c.getColumnIndex("Test"));
TextView descriptionTextView = (TextView)row.findViewById(R.id.description);
Button infoButton = (Button)row.findViewById(R.id.infoButton);
Button testButton = (Button)row.findViewById(R.id.testButton);
bundle = new Bundle();
bundle.putString("LektionNummer", id);
descriptionTextView.setText(id+". "+description);
if(info != null && info.length() > 0){
infoButton.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
Intent intent = new Intent(context, Lektion.class);
intent.putExtras(bundle);
context.startActivity(intent);
}
});
}
if(test != null && test.length() > 0){
}
return row;
}
}
但我不想單擊整行。 我有很多行,總是有2個按鈕,我怎麼能不同這些按鈕之間?因爲例如infoButton1調用Lektion1和infoButton2調用Lektion2,它應該知道哪個按鈕因爲該行而點擊了.. – krackmoe
我對OnItemClick的錯誤。使代碼工作的最快方法是停止在每個getView上重新創建Bundle。也許你可以使用setTag方法來添加商店的ID。主要問題是你在每次調用時都會創建一個新的Bundle,從而刪除前一個Bundle(這就是爲什麼你只能得到最新的行) – momo