java - 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() {

    @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/

相关文章:

android - 通用 ImageLoader java.io.EOFException

java - Spring可缓存不同步

java - 如何使用 mysql 优化 solr 索引

java - Android - 何时使用共享首选项以及何时使用 SQLite

android - Appium 显示错误“未知错误 : Chrome version must be >= 31. 0.1650.59\n 即使 Android 移动应用程序中的 chrome 版本更高

android - 如何从 ListView 中获取选定的值以显示在第二个 Activity 中?

android - ListView 的搜索功能

java - 求取模结果的正确方法

安卓APK文件: Re-activate older APK file in Google Play Store

android - 无法使用 dynamicFeatures 运行 Espresso