【发布时间】:2012-03-02 10:17:06
【问题描述】:
我用 ArrayAdapter 制作了一个 ListView。有用。但是我不得不两次为项目布局放置资源 id:在适配器定义和 getView 中,在 View 参数为空的情况下。
// --------------------------------------------here is the FIRST use
lvShows.setAdapter(new ArrayAdapter<TvShow>(this, R.layout.show_row, allKnownShows) {
@Override
public View getView(int position, final View rowView, ViewGroup parent) {
LinearLayout showView;
if (rowView == null) {
// --------------------------------- here is the SECOND use
showView = (LinearLayout) inflater.inflate(R.layout.show_row, parent, false);
}
else {
showView = (LinearLayout) rowView;
}
((TextView) showView.getChildAt(0)).setText(time));
((TextView) showView.getChildAt(1)).setText(name);
return showView;
}
});
当然,这种风格令人厌恶。能否请您指教,我的理解有什么问题,我怎样才能只使用一次资源?
如果创建一个新的 ArrayAdapter 我正在设置布局 id,它应该知道它并以某种方式使用。我怎么能达到它?或者更好的是,我希望适配器自动创建项目视图。再说一遍 - 我该如何使用它?
ArrayAdapter 在创建新资源时如何处理我们提供给它的资源?它的所有构造函数都获取项目资源,我们管理此资源并“手动”对其进行膨胀。这不是有效的方法。
【问题讨论】:
-
谢谢。我已经有工作代码。我不想为美丽付出太多。由于其他原因,我将在稍后尝试使用此确切列表的基本适配器,可能在一两个月内,但现在我想知道一些在列表中显示复杂项目的简单而正确的方法。 ArrayAdapter 似乎是最简单的。
标签: android listview android-arrayadapter android-resources