在Android中使用适配器的FlowLayout

时间:2014-12-17 20:38:51

标签: android flowlayout

我正在寻找任何帮助我使用适配器制作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中立即膨胀,并且thera是100 childView!

2 个答案:

答案 0 :(得分:1)

以下是使用自定义库的示例,其行为类似于列表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);

将显示如下结果: -

enter image description here

答案 1 :(得分:0)

之前在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)