带有标头视图的Android ListView

马里乌斯·康斯坦丁

ListFragment我的Android应用程式中有一个自定义的怪异问题我有一个自定义的风俗ArrayAdapterlistView除此以外,LoaderManager我还headerView附有:

public void onViewCreated(View view, Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);
    setListAdapter(null);
}

public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
    if (getListView().getHeaderViewsCount() <= 0 && headerView != null)

        getListView().addHeaderView(headerView, null, false);

            if (listAdapter == null)
    listAdapter = new DataAdapter(getActivity(), R.id.label1,
            (CategoryModel) getArguments().getParcelable(MODEL_KEY));
    setListAdapter(listAdapter);

    setListShown(false);
    getLoaderManager().initLoader(0, null, this);

     }



    private final static class DataAdapter extends ArrayAdapter<ICatalogModel> {
        private final LayoutInflater inflater;
        private final CategoryModel parentModel;

        private CustomArrayFilter filter;

        public DataAdapter(Context c, int textViewResourceId,
                CategoryModel parentModel) {
            super(c, textViewResourceId);
            this.parentModel = parentModel;
            inflater = LayoutInflater.from(c);
        }

        @Override
        public boolean areAllItemsEnabled() {
            return true;
        }

        @Override
        public boolean isEnabled(int position) {
            return true;
        }



        public ArrayList<ICatalogModel> getData() {
            return originalValues;
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            View v = convertView;
            ItemHolder holder;
            if (v == null) {
                v = inflater.inflate(R.layout.rooms_list_row, parent, false);
                holder = new ItemHolder();
                holder.nameField = (TextView) v.findViewById(R.id.label1);
                v.setTag(holder);
            }

            holder = (ItemHolder) v.getTag();

            final ICatalogModel model = getItem(position);
            holder.nameField.setText(model.getName());
            return v;
        }

        public void addAllSupport(ArrayList<ICatalogModel> data) {
            for (ICatalogModel p : data) {
                add(p);
            }
            notifyDataSetChanged();
        }
}

onLoaderReset我试图通过调用清除适配器数据的方法上,myAdapter.clear()但是在126行IndexOutOfBounds的androidHeaderViewListAdapter类中抛出了一个奇怪的异常

@Override
public void onLoaderReset(Loader<ArrayList<ICatalogModel>> arg0) {
    if (listAdapter != null) {
            ((DataAdapter) listAdapter).clear();
    }
}

@Override
public void onLoadFinished(Loader<ArrayList<ICatalogModel>> arg0,
        ArrayList<ICatalogModel> arg1) {

    if (listAdapter != null) {
        ((DataAdapter) listAdapter).clear();
        if (CokConstants.SUPPORTS_HONEYCOMB) {
            ((DataAdapter) listAdapter).addAll(arg1);
        } else {
            ((DataAdapter) listAdapter).addAllSupport(arg1);
        }
        ((DataAdapter) listAdapter).setOriginalValues(arg1);
    }
    if (isResumed())
        setListShown(true);
    else
        setListShownNoAnimation(true);
}

我发现问题出在某种程度上与我没有删除方法headerView的事实有关onDestroyView...我做到了...没有更多的例外...但是现在又有一个问题...每当我回到那个来自堆栈的片段...即使将数据正确添加到适配器中,该列表也不再可见。有人遇到过这个问题吗?

革命

当您向其中添加页眉或页脚视图时ListView设置为它的适配器包装在中WrapperListAdapter您必须检查适配器的实例。

DataAdapter myExistingAdapter = null;
if(listAdapter instanceof WrapperListAdapter) {
    myExistingAdapter = (DataAdapter)((WrapperListAdapter)listAdapter).getWrappedAdapter();
} else if (listAdapter instanceof DataAdapter) {
    myExistingAdapter = (DataAdapter)listAdapter;
}

android.widget.WrapperListAdapter已知的间接子类HeaderViewListAdapter

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

ListView标头视图中的ScrollView无法滚动

来自分类Dev

未创建带有片段视图的Android ListView

来自分类Dev

Android:尝试为带有节头的ListView编写ViewHolder类时,ListView变得混乱

来自分类Dev

Android:尝试为带有节头的ListView编写ViewHolder类时,ListView变得混乱

来自分类Dev

带有图像的Android ListView

来自分类Dev

带有查询的Android ListView

来自分类Dev

Android:将ViewGroup附加为ListView的标头

来自分类Dev

从ListView获取GridViewColumn标头值?

来自分类Dev

同步滚动部分ListView标头

来自分类Dev

ListView标头-不同的边距

来自分类Dev

来自QAbstractListmodel headerData()的QML Listview标头

来自分类Dev

ListView标头忽略layout_height

来自分类Dev

来自QAbstractListmodel headerData()的QML Listview标头

来自分类Dev

ListView标头-不同的边距

来自分类Dev

wxWidgets ListView标头未显示

来自分类Dev

ListView标头,而不是在scrollview中

来自分类Dev

Android插入带有viewview结果的listview

来自分类Dev

带有onClick项的Android ListView

来自分类Dev

带有Switch onCheckedListener的Android ListView很奇怪

来自分类Dev

带有片段的Android ListView

来自分类Dev

android中带有动画的水平ListView

来自分类Dev

带有子项的ListView。Android示例

来自分类Dev

android,带有复选框的listview

来自分类Dev

带有onClickListener()的Android Google Map ListView

来自分类Dev

带有垂直彩色边框的Android listview

来自分类Dev

带有onClick项的Android ListView

来自分类Dev

android中带有动画的水平ListView

来自分类Dev

带有隐藏标题的Android ListView

来自分类Dev

带有ListView的Android对话框