即時通訊使用onItemClick,我得到正確的行並能夠做我需要的東西(我的目標是添加一個視圖到該項目 但是,按鈕點擊事件不會返回正確的單元格,而是列表中的隨機其他單元格,下面是我的代碼中的一個示例:使用遊標適配器中的點擊事件
public class CustumAdapter extends CursorAdapter implements OnClickListener{
private Context context;
private Button btn_maybe;
private String name;
public CustumAdapter(Context context, Cursor c, LatLng position) {
super(context, c);
this.position = position;
this.context = context;
}
@Override
public void bindView(View view, final Context context, Cursor c) {
name = c.getString(c.getColumnIndex(ContractPlaces.PLACE_NAME));
btn_maybe = (Button) view.findViewById(R.id.cursor_layout_maybe);
btn_maybe.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
//i need to use the correct view from BindView here
}
});
nameView.setText(name);
在此示例代碼,我想在小區中的按鈕,點擊讓
我accsses在按鈕確實是,但是我回來從隨機列表中的小區的觀點來看,我怎樣才能得到正確的單元格INF o在我的點擊監聽器中?
編輯:
所以感謝@darnmason我想通了,爲了得到使用光標適配器click事件的列表項的看法,有問題,這將是一個光標標籤設置按鈕。爲getPosition(),所以標籤位於項目的正確位置,在ListView生命週期的真諦,如果我想在一個特定位置的項目的視圖我會打電話給
//where lv is the ListView (you can pass it to the adapter as a parameter).
//getChildAt returns a view in a position
//value is the value of cursor.getPosition() so its the correct position of the item where //the button was clicked.
//lv.getFirstVisiblePosition() is the first position that is actually on screen,
View view = lv.getChildAt(value - lv.getFirstVisiblePosition());
當你扣除此從實際的位置你得到你需要的位置,不要忘記添加
if(view == null)
return;
避免免除。
我的問題是在onClickListener我只得到按鈕的視圖,我需要像bindView中的整個單元格的視圖 –
我的意思是在bindView的按鈕上設置標籤,所以在onClick你從標籤獲得索引 – darnmason
是!那工作!非常感謝! –