【发布时间】:2013-06-22 17:22:03
【问题描述】:
我有一个名为 tags 的值,它是一个逗号分隔的单词列表。 我想把它放到设计精美的“标签按钮”中。
下面的作品。然而,((LinearLayout) view).removeAllViews(); 行似乎是一个丑陋的修复,因为在我使用 setOnScrollListener() 加载更多行后每次调用 adapter.notifyDataSetChanged(); 时不多次添加标签
对这里的“最佳实践”有什么建议,或者至少是更好看的解决方案?
adapter = new SimpleAdapter(activity,data,
R.layout.list_transactions,
new String[] {"comment", "amount","date","tags","category"},
new int[] { R.id.comment, R.id.amount,R.id.date,R.id.tags_container,R.id.category }
);
SimpleAdapter.ViewBinder binder = new SimpleAdapter.ViewBinder() {
@Override
public boolean setViewValue(View view, Object object, String value) {
//Log.d(TAG,"view.toString()= "+ view.toString());
if (view.getId() == R.id.tags_container)
{
String[] tags = value.split(",");
((LinearLayout) view).removeAllViews();
for (String tag : tags) {
View v = createTagView(activity.getLayoutInflater(),tag);
((LinearLayout) view).addView(v);
}
return true;
}
return false;
}
};
【问题讨论】:
-
如果我是你,我会假设我在一行中拥有的平均标签数,并在行布局中从一开始就添加与该数字一样多的标签视图(主要是为了避免/减少每次创建视图)。然后在
ViewBinder中,我将根据该行的标签的确切数量(并且可能删除一些)简单地隐藏/添加额外的视图。
标签: java android listview simpleadapter android-viewbinder