![](/img/trans.png)
[英]How to get clicked item position from Custom ListView in android?
[英]Android: how to get the clicked item position in the ListView?
我的listview代碼如下:
CourseDataAdapter mCourseListAdapter = new CourseDataAdapter(this, R.layout.coursesearchviewrow, mCursor);
list.setAdapter(mCourseListAdapter);
list.setItemsCanFocus(false);
list.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1,
int arg2, long arg3) {
long index = arg0.getSelectedItemId();
listDialog.dismiss();
}
});
我使用我的自定義游標適配器,我的代碼在這里:
public class CourseDataAdapter extends ResourceCursorAdapter {
private TextView courseType;
private TextView courseDays;
private TextView courseTime;
public CourseDataAdapter(Context context, int layout, Cursor c) {
super(context, layout, c);
}
@Override
public View newView(Context context, Cursor cursor, ViewGroup parent) {
LayoutInflater mInflater = (LayoutInflater)context.getSystemService
(Context.LAYOUT_INFLATER_SERVICE);
return mInflater.inflate(R.layout.coursesearchviewrow, parent, false);
}
@Override
public void bindView(View view, Context context, Cursor cursor) {
courseType = (TextView) view.findViewById(R.id.course_search_type_view);
courseDays = (TextView) view.findViewById(R.id.course_search_days_view);
courseTime = (TextView) view.findViewById(R.id.course_search_time_view);
courseType.setText(cursor.getString(cursor.getColumnIndex(CourseDbAdapter.KEY_TYPE)));
courseDays.setText(CourseDataHandler.daysStringProcessor(cursor.getInt(cursor.getColumnIndex(CourseDbAdapter.KEY_DAYS))));
courseTime.setText(CourseDataHandler.courseTimeProcessor(cursor.getString(cursor.getColumnIndex(CourseDbAdapter.KEY_START_TIME)), cursor.getString(cursor.getColumnIndex(CourseDbAdapter.KEY_END_TIME))));
}
}
但是,每次單擊列表中的項時,getSelectedItemId()方法都會返回無效值。
PS。 我嘗試了getSelectedItemPosition(),它還返回一個無效值,即-1。
那么如何才能獲得我點擊的項目的位置?
選擇的列表項與按下它的概念不同,在這種情況下不適用。 您已經將ID直接傳遞給了您,它是onItemClick
方法的第4個參數。
文檔具有onItemClick
的以下方法簽名:
public abstract void onItemClick (AdapterView<?> parent, View view, int position, long id)
這似乎是你正在尋找的:
position視圖在適配器中的位置。
我假設你想要這個位置,這樣你就可以得到存儲在與listview中該點相關聯的游標中的一些數據。 你應該做的是將onClickListener賦值移動到bindView方法中,如下所示:
public void bindView(View view, Context context, Cursor cursor) {
courseType = (TextView) view.findViewById(R.id.course_search_type_view);
courseDays = (TextView) view.findViewById(R.id.course_search_days_view);
courseTime = (TextView) view.findViewById(R.id.course_search_time_view);
courseType.setText(cursor.getString(cursor.getColumnIndex(CourseDbAdapter.KEY_TYPE)));
courseDays.setText(CourseDataHandler.daysStringProcessor(cursor.getInt(cursor.getColumnIndex(CourseDbAdapter.KEY_DAYS))));
courseTime.setText(CourseDataHandler.courseTimeProcessor(cursor.getString(cursor.getColumnIndex(CourseDbAdapter.KEY_START_TIME)), cursor.getString(cursor.getColumnIndex(CourseDbAdapter.KEY_END_TIME))));
view.setOnClickListener(new View.OnClickListener(){
public void onClick(View view){
//in here you now have access to the cursor
}
});
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.