Java Android:如何获取ListView中单击的项目位置?
我的listview的代码如下所示:Java Android:如何获取ListView中单击的项目位置?,java,android,android-listview,Java,Android,Android Listview,我的listview的代码如下所示: CourseDataAdapter mCourseListAdapter = new CourseDataAdapter(this, R.layout.coursesearchviewrow, mCursor); list.setAdapter(mCourseListAdapter); list.setItemsCanFocus(false); list.setOnItemClickListener(new OnItemClickListener()
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();
}
});
但是,每次单击列表中的项目时,getSelectedItemId()方法都会返回一个无效值
另外,我尝试了getSelectEditePosition(),它还返回了一个无效值,即-1
那么,如何获取我单击的项目的位置呢?我假设您需要该位置,以便可以获取与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
}
});
}
选择的列表项与按下列表项的概念不同,在本例中不适用。您已经将ID直接传递给您,它是
onItemClick
方法的第四个参数。具有onItemClick
的以下方法签名:
public abstract void onItemClick (AdapterView<?> parent, View view, int position, long id)
public-abstract-void-onItemClick(AdapterView父视图、视图视图、整型位置、长id)
这似乎就是你想要的:
在适配器中定位视图的位置
第三个论点是立场。你看过文档了,对吗?我使用eclipse,它有一个自动添加未实现方法的函数。所以我忽略了这个论点。非常感谢。是的,自动完成的方法存根使用
arg0
arg1
…等等,这确实很烦人。命名方案。
public abstract void onItemClick (AdapterView<?> parent, View view, int position, long id)