Java Android:如何获取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()

我的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();

    }

});
但是,每次单击列表中的项目时,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)