2011-06-06 51 views
1

我列出了一些listadapter后点击列表中的项目我想用新数据重新加载列表,更改适配器的比赛。如何更改部分中的列表视图适配器setOnItemClickListener

我setOnItemClickListener用这个,但我得到的错误: “类型构造ArrayAdapter(新AdapterView.OnItemClickListener(){},INT,ArrayList中)是未定义”

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

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

回答

1

Glendon的答案可能是正确的。不过,如果出于某种原因确实需要更改适配器,则需要将正确的Context实例传递给构造函数的第一个参数。

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

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

另外,如果听者是一个内部类的活动,你可以使用:

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

感谢Aleadam你的答案适用于我:)另外一个问题点击我的适配器后和列表上的东西都在改变,我想在按下后退按钮后可以选择回去,完成这个任务的最简单方法是什么? – Marcin 2011-06-06 23:47:00

+0

我不太确定你的意思,回头看看。就像一个完全不同的问题,请考虑发布一个更好的描述你需要的新的。 – Aleadam 2011-06-06 23:50:57

1

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

编辑

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

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

第一替换

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

+0

是,不同的地方是听众。在看到您的编辑之前,我添加了相同的方法。 – Aleadam 2011-06-06 23:31:37

+0

当我清除我的适配器,并尝试添加新的字符串或“重新创建ArrayAdapter与新的列表数据”我得到的错误在开始时提到类型构造函数ArrayAdapter(新的AdapterView.OnItemClickListener(){},int,ArrayList)未定义“' – Marcin 2011-06-06 23:34:57

+0

顺便说一句,'NameOfJavaFile'可能是扩展OnClickListener的类的名称,并不清楚你是否指的是活动 – Aleadam 2011-06-06 23:53:27