【问题标题】:Extract string from custom object on listView item click从 listView 项目单击的自定义对象中提取字符串
【发布时间】:2017-11-17 22:44:06
【问题描述】:

我创建了自己的类(课程)来保存多个字符串并传递对象以使用 ArrayAdapter 和 AsyncTaskLoader 填充列表(字符串从 JSON api 填充)。

假设我的班级中有这 3 个字符串:

private String mCourseTitle;
private String mTime;
private String mTrainer;

public String getCourseTitle() {
    return mCourseTitle;
}

public String getTime() {
    return mTime;
}

public String getTrainer() {
    return mTrainer;
}

我想在我的 Fragment 中设置一个项目点击侦听器,当点击它时,会显示一条仅包含课程标题字符串的 toast 消息,我有点卡住了...

如何从点击的项目中提取标题以在 Toast 中显示?

 // Create a new adapter that takes an empty list of days as input
        mAdapter = new DayAdapter(getActivity(), new ArrayList<Day>());

        // Set the adapter on the {@link ListView}
        // so the list can be populated in the user interface
        listView.setAdapter(mAdapter);

        //on item click Listener
        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int position, long id) {
                // Show the title
                Toast.makeText(getContext(), Title, Toast.LENGTH_SHORT).show();
            }
        });

【问题讨论】:

    标签: android listview


    【解决方案1】:

    这就是答案

     //on item click Listener
        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int position, long id) {
                 Course yourCourse = yourList.get(position);
                  String yourCourseTitle = yourCourse.getCourseTitle();
                // Show the title
                Toast.makeText(getContext(), Title, Toast.LENGTH_SHORT).show();
            }
        });
    

    【讨论】:

    • 课程 currentCourse = listView.get(position);说它无法解析方法 get(int)。
    • 不是 listView.get(position) ,使用你的对象列表,我的意思是 ArrayList 或 List。你是如何创建适配器的?
    • 我的错,它应该是一个 ArrayList
    • 我需要弄清楚,它说不能从静态上下文中引用非静态方法 get(int)。
    • 在你的活动中声明你的数组列表为全局变量,不要使用静态的。或者另一种方法是在您的 DayAdapter 中创建新方法来检索对象列表并执行此调用 Course yourCourse = mAdapter.yourmethod(position);
    猜你喜欢
    • 2013-05-08
    • 1970-01-01
    • 1970-01-01
    • 2019-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多