【问题标题】:FlowLayout with adapter in androidandroid中带有适配器的FlowLayout
【发布时间】:2014-12-17 20:38:51
【问题描述】:

我正在寻找任何可以帮助我使用适配器制作 FlowLayout 的库,例如 GridView,但我想在流中排列元素!你怎么看,最好的方法是什么(FreeFlow)? 我用适配器创建了一个 StickyListHeadersListView:

   @Override
public View getView(int position,  View convertView, final ViewGroup parent) {
    FiltersChildViewHolder holder;
    if (convertView == null) {
        final View[] temp = new View[1];
        mActivity.runOnUiThread(new Runnable() {
            @Override
            public void run() {
             temp[0] = mInflater.inflate(R.layout.item_filters_layout, parent, false);
            }
        });
      convertView = temp[0];

        holder = new FiltersChildViewHolder();
        holder.flFilters_IFL = (FlowLayout) convertView.findViewById(R.id.flFilters_IFL);

        convertView.setTag(holder);
    } else {
        holder = (FiltersChildViewHolder) convertView.getTag();
    }


    ArrayList<FilterModel> filterModels = getFiltersForCategory(position);

    FilterLayoutAdapter adapter = new FilterLayoutAdapter(mActivity, filterModels);
    adapter.setOnFiltersChangedListener(mFiltersChangedListener);
    adapter.setIsDefault(isDefault);
    holder.flFilters_IFL.setAdapter(adapter);

    return convertView;
}

这是我的适配器中的 getView() 方法!每个列表项都是一个FlowLayout,FilterLayoutAdapter会向这个FlowLayout添加视图,这对我有用,这样元素是按流排列的,但是当我滚动到下一个列表项时,ListView非常冻结,因为所有的childView在 FlowLayout 中立即膨胀,并且有 100 个 childView!

【问题讨论】:

    标签: android flowlayout


    【解决方案1】:

    您好,这里是使用 custom Library 的示例,其作用类似于 List GitHubLibrary TagLayout

    • 示例代码:-

    mFlowLayout.setAdapter(new TagAdapter<String>(mVals) { @Override public View getView(FlowLayout parent, int position, String s) { TextView tv = (TextView) mInflater.inflate(R.layout.tv, mFlowLayout, false); tv.setText(s); return tv; } });

    使用下面的代码,您可以预先设置您想要的选择:-

    mAdapter.setSelectedList(1,3,5,7,8,9);
    

    将显示如下结果:-

    【讨论】:

      【解决方案2】:

      在getView方法的末尾使用这段代码之前 return view; 线。

      Animation animationY = new TranslateAnimation(0, 0,
                              parent.getHeight() / 4, 0);
                      animationY.setDuration(1000);
                      view.startAnimation(animationY);
      

      父母在哪里

      public View getView(final int position, View convertView,
                      ViewGroup parent)
      

      【讨论】:

      • 我不明白,它将如何解决我的问题!我的问题是,每个列表项都是一个 FlowLayout,每个 FlowLayout 都会有至少 30 个子项,当我给它们充气时,它们会立即充气,这会阻塞主线程,因为我使用了 ListView。我认为这可以与 GridView 一起使用,但是GridView 不按流排列元素!
      • FlowLayout 是一个自定义的 ViewGroup,它像 Java 中的 FlowLayout 一样按流排列元素!例如:github.com/blazsolar/FlowLayout
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-08
      • 1970-01-01
      • 2023-03-19
      • 1970-01-01
      相关资源
      最近更新 更多