使用simpleadapter在listview中实现自定义视图的更好方法是什么?

时间:2013-06-25 18:56:06

标签: java android listview simpleadapter android-viewbinder

我有一个名为tags的值,它是以逗号分隔的单词列表。 我想把它放到设计精美的“标签按钮”中。

以下作品。但是,在我使用((LinearLayout) view).removeAllViews();

加载更多行后每次调用adapter.notifyDataSetChanged();时多次添加标记,行setOnScrollListener()似乎是一个丑陋的修复

这里有“最佳实践”的建议,或者至少是一个更好看的解决方案?

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;
    }
};

1 个答案:

答案 0 :(得分:0)

另一种解决方案是维护一组字符串,其中包含要显示的视图的标记。而不是删除所有视图使用

如果(set.contains(标签))

确定是否应添加视图。同样,这只是一种替代解决方案。我不确定相对表现。