我的 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
方法的第四个参数。
关于java - Android:如何获取ListView中被点击的项目位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7856998/