【问题标题】:Better way to implement custom views in a listview with simpleadapter?使用 simpleadapter 在列表视图中实现自定义视图的更好方法?
【发布时间】: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


【解决方案1】:

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

if(set.contains(tag))

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多