【问题标题】:How to change listview adapter in section setOnItemClickListener如何更改部分 setOnItemClickListener 中的列表视图适配器
【发布时间】:2011-06-06 23:14:56
【问题描述】:

单击列表中的项目后,我有一些列表适配器的列表视图我想用新数据重新加载列表,更改适配器的比赛。

我在 setOnItemClickListener 中使用它,但出现错误:“Type The constructor ArrayAdapter(new AdapterView.OnItemClickListener(){}, int, ArrayList) is undefined”

list.setAdapter(new ArrayAdapter<String>(this, R.layout.simple_list_item_1,Data.user.getChosen_rest()));

我应该如何正确地做到这一点?

【问题讨论】:

    标签: android listview


    【解决方案1】:

    格伦登的答案可能是正确的。不过,如果您确实需要更改适配器,则需要将正确的 Context 实例传递给构造函数的第一个参数。

    您可以扩展 OnClickListener 并向其添加一个字段 mContext,您将为其分配当前 Activity。然后,将其用作:

    list.setAdapter(new ArrayAdapter<String>(mContext, R.layout.simple_list_item_1,Data.user.getChosen_rest()));
    

    或者,如果监听器是Activity的内部类,你可以使用:

    list.setAdapter(new ArrayAdapter<String>(MyActivity.this, R.layout.simple_list_item_1,Data.user.getChosen_rest()));
    

    【讨论】:

    • 感谢 Aleadam,您的回答对我有用:) 单击我的适配器后还有一个问题,列表中的内容正在发生变化。我想在按下返回按钮后选择返回,完成此任务的最简单方法是什么?
    • 我不太确定您所说的返回是什么意思。无论如何,这看起来是一个完全不同的问题。请考虑发布一个新的,更好地描述您的需求。
    【解决方案2】:

    here 的答案应该会让你朝着正确的方向前进。如果您可以使用add()remove()insert()clear() 转换您的初始 ArrayAdapter,您可以调用notifyDataSetChanged() 重新加载它。

    编辑

    实际上,为了更好地解决您的错误,请尝试替换

    list.setAdapter(new ArrayAdapter<String>(this, R.layout.simple_list_item_1,Data.user.getChosen_rest()));
    

    list.setAdapter(new ArrayAdapter<String>(NameOfActivity.this, R.layout.simple_list_item_1,Data.user.getChosen_rest()));
    

    首先。

    【讨论】:

    • 它是,取决于监听器在哪里。在看到您的编辑之前,我添加了相同的方法。
    • 当我清除我的适配器并尝试添加新字符串或“使用新列表数据重新创建 ArrayAdapter”时,我收到开头提到的错误 Type The constructor ArrayAdapter(new AdapterView.OnItemClickListener(){}, int, ArrayList) is undefined"
    • 顺便说一句,NameOfJavaFile 可能是扩展 OnClickListener 的类的名称,不清楚你指的是 Activity。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多