Android ListAdapter或可能的ListView在运行时更新文本
你好,福克斯,我有一个小问题,我在网上和论坛上找不到合适的答案。请不要告诉我在运行时有人要求更改列表视图文本颜色的文章,因为我读了很多,但没有找到一篇可以帮助我的文章 我有一个简单的ListView,它通过使用ListAdapter显示字符串对象数组 我需要在运行时根据它们的内容更新一些ListView字符串。使用列表视图创建中使用的列表适配器的全局引用,我可以使用下面的代码获得每个列表视图字符串的内容 但是,除了检索之外,我希望能够依次修改每个字符串,然后将其放回相同的索引位置,并让列表视图反映更改。怎么做Android ListAdapter或可能的ListView在运行时更新文本,android,listview,text,set,listadapter,Android,Listview,Text,Set,Listadapter,你好,福克斯,我有一个小问题,我在网上和论坛上找不到合适的答案。请不要告诉我在运行时有人要求更改列表视图文本颜色的文章,因为我读了很多,但没有找到一篇可以帮助我的文章 我有一个简单的ListView,它通过使用ListAdapter显示字符串对象数组 我需要在运行时根据它们的内容更新一些ListView字符串。使用列表视图创建中使用的列表适配器的全局引用,我可以使用下面的代码获得每个列表视图字符串的内容 但是,除了检索之外,我希望能够依次修改每个字符串,然后将其放回相同的索引位置,并让列表视图反
for (int x = 0; x <= listAdapter.getCount();x++)
{
Object o = this.listAdapter.getItem(x);
if (o.getClass().getSimpleName().equals("String"))
{
String s = (String) o;
s = modifyString(s);
//s is the string I want to modify then put back in the same place.
}//end if
}//end for
for(int x=0;x据我所知,您无法更改适配器中的项目-除非您使用自定义适配器(通过扩展BaseAdapter等…)
因此,我认为你必须:
确保适配器的构造函数接受保存字符串的数据结构
确保您的数据结构是全局的
在需要时对该数据结构进行更改
调用myAdapter.notifyDataSetChanged();
这将告诉适配器在列表中进行了更改,应该重新创建listview
更新listview后,您甚至可以通过以下方式将用户带回索引:
list.setSelection(positionWhereTheUserClicked);
我希望这有帮助,如果您需要更多的代码引用,请告诉我
这里有一些代码
private ArrayList<String> results = new ArrayList<String>(); //global
private BaseAdapter searchAdapter = new BaseAdapter (results, this); //global
private void updateResults(final ArrayList<String> updatedList){
results = updatedList;
final ListView list = (ListView)findViewById(R.id.search_results);
list.setAdapter(searchAdapter);
list.setOnItemClickListener(new ListView.OnItemClickListener(){
// implementation of what happens when you click on an item //
});
searchAdapter.notifyDataSetChanged();
}
private ArrayList results=new ArrayList();//全局
private BaseAdapter searchAdapter=new BaseAdapter(结果,this);//全局
私有无效更新结果(最终ArrayList updatedList){
结果=更新列表;
最终ListView列表=(ListView)findViewById(R.id.search\u results);
list.setAdapter(searchAdapter);
list.setOnItemClickListener(新的ListView.OnItemClickListener(){
//实现当你点击一个项目时会发生什么//
});
searchAdapter.notifyDataSetChanged();
}
这段代码对我来说效果不错,我希望它能有所帮助。刚刚偶然发现了这个问题并找到了解决方案。 我用的是一个
m_ListAdapter = new SimpleAdapter(this, m_List, R.layout.option_list_row, columns, renderTo);
listView中的每个项目都是一个手动选项,会导致显示一个对话框。一旦通过该对话框接收到数据,我所要做的就是创建一个新的SimpleAdapter,其中包含一个更新的ArrayList,其中包含新数据,然后将adapter设置为新适配器。
列表视图将立即更新。关于“Gaaah”部分:在编辑器中选择代码块并单击“{}”按钮;适用于小片段和多行块。欢迎:)当[code]和[/code]约定多年来被证明是有效和直观的时,这就太复杂了。特别是当您想在注释中放入代码位时。我已经尝试从原始字符串数组生成一个新的数组适配器,然后设置列表适配器,就像创建活动时一样。但是更改没有显示,我使用了.notifyDataSetChanged()。嘿,Andrew,我刚刚编辑了我的答案-添加了一些代码,希望能有所帮助。为此,我自己做了类似的事情,只是从从现有适配器检索(然后修改)的字符串创建了一个新适配器。