【发布时间】:2013-08-20 16:34:21
【问题描述】:
所以我有一个我创建的自定义列表适配器,我正在尝试使其动态化。它开始是空的,然后用户可以动态添加或删除项目。一切正常,除了一件事:当我更新适配器时没有调用适配器的“getView”,因此项目的标题 - 显然 - 没有设置(而是显示它的地址)。 这是更新数组的代码:
private void newTab(String name, String url){
_tabAdapter.add(new Article(name,url));
_tabAdapter.notifyDataSetChanged();
_tabCount++;
}
这是适配器本身的代码:
public class TabAdapter extends ArrayAdapter<Article>{
Context _context;
@Override
public int getCount() {
return _tabCount;
}
public TabAdapter(Context c) {
super(c, R.layout.tab_item);
_context=c;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater=(LayoutInflater) _context.
getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View _view = inflater.inflate(R.layout.tab_item, parent,false);
TextView _itemText = (TextView) _view.findViewById(R.id.tab_text);
Article getArticle = getItem(position);
String newName = getArticle.getName();
_itemText.setText(newName);
return _view;
}
}
现在其他一切都运行良好 - 即使 OnClick 运行良好并正确获取项目名称,只是列表本身不显示项目名称。我一定错过了一些非常基本的东西,但我找不到它是什么。任何帮助将不胜感激。
更新:虽然它不能解决所提到的确切问题,但我设法通过为“Article”类创建一个“toString()”方法来解决它 - 所以现在标题显示应该如此 - 除了它不是一个非常优雅的解决方案。
【问题讨论】:
-
您的“更新”代码正在向列表末尾添加一个项目。您没有向我们展示您如何更改现有项目的标题。或者您是说您添加的新项目没有正确显示?
-
后者。新项目显示的是内存地址而不是标题。
标签: android android-arrayadapter custom-adapter