在CursorAdapter上设置两个layoutsType的问题

时间:2015-07-08 21:30:26

标签: android android-cursoradapter android-viewholder

我正在尝试使用两种不同的布局设置游标适配器,第一种必须是唯一的,其他 - 相同,但getItemViewType(cursor.getPosition());总是返回0 ...

这是我的适配器:

公共类MyAdapter扩展了CursorAdapter

public static class ViewHolder {

 public ViewHolder (View rootView){}}

public ProfileAdapter(Activity activity, Cursor c) {
        super(activity, c);
        mActivity = activity;
    }

@Override
    public View newView(Context context, Cursor cursor, ViewGroup parent) {
        int mLayoutId = -1;
        mViewType = getItemViewType(cursor.getPosition());
        if (mViewType == VIEW_TYPE_MAIN){
            mLayoutId = R.layout.main;
        } else {
            mLayoutId = R.layout.list_items;
        }

        View rootView = LayoutInflater.from(context).inflate(mLayoutId, parent, false);
        ViewHolder viewHolder = new ViewHolder(rootView);
        rootView.setTag(viewHolder);
        return rootView;

    }


@Override
    public void bindView(View view, Context context, Cursor cursor) {
        mCursor = cursor;
        mView = view;
        mViewHolder = (ViewHolder) view.getTag();
        mViewType = getItemViewType(cursor.getPosition());
        if (mViewType == VIEW_TYPE_MAIN){

        } else {
        }
    }
感觉我错过了很简单的事情...... 会很高兴任何想法如何解决这个工作人员!

1 个答案:

答案 0 :(得分:1)

您的适配器必须实现getViewTypeCount()(并在您的情况下返回2)并实施getItemViewType()。默认实现不了解您的数据,并且不会尝试解决这个问题。它只处理只使用一种视图类型的情况(因此返回0)。添加缺失的方法,你应该很好。