recycleView的適配器

recycleView 多佈局加載

package soexample.umeng.com.recycleview_demo_day13.adapter;

import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;

import java.util.ArrayList;

import soexample.umeng.com.recycleview_demo_day13.R;
import soexample.umeng.com.recycleview_demo_day13.bean.BeautyBean;

/**
 * RecyclerView多佈局首先
 * 1:extends RecyclerView.Adapter<RecyclerView.ViewHolder> holder用它提供的
 */
public class MoreAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> implements View.OnClickListener {
    private ArrayList<BeautyBean> mList;
    private final int ONE_ITEM = 1;
    private final int TWO_ITEM = 2;

    public MoreAdapter(ArrayList<BeautyBean> mList) {
        this.mList = mList;
    }

    //參數2就是佈局type類型
    @NonNull
    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int viewType) {
        View view = null;
        RecyclerView.ViewHolder holder = null;
        switch (viewType) {
            case ONE_ITEM:
                view = View.inflate(viewGroup.getContext(), R.layout.recy_item_one, null);
                holder = new OneHolder(view);
                break;
            case TWO_ITEM:
                view = View.inflate(viewGroup.getContext(), R.layout.recy_item_two, null);
                holder = new TwoHolder(view);
                break;
        }
        view.setOnClickListener(this);
        return holder;
    }

    @Override
    public void onBindViewHolder(@NonNull RecyclerView.ViewHolder viewHolder, int i) {
        BeautyBean bean = mList.get(i);
        //判斷前一個參數是否是後一個參數的一個實例
        if (viewHolder instanceof OneHolder) {
            ((OneHolder) viewHolder).mName.setText(bean.getName());
            // ((OneHolder) viewHolder).itemView.setTag(i);
        } else {
            ((TwoHolder) viewHolder).mImage.setImageResource(bean.getImage());
            //  ((TwoHolder) viewHolder).itemView.setTag(i);
        }
        viewHolder.itemView.setTag(i);
    }

    @Override
    public int getItemCount() {
        return mList.size();
    }

    //顯示幾種佈局
    @Override
    public int getItemViewType(int position) {
        if (position % 2 == 1) {
            return ONE_ITEM;
        } else {
            return TWO_ITEM;
        }
    }


    class OneHolder extends RecyclerView.ViewHolder {
        private TextView mName;

        public OneHolder(@NonNull View itemView) {
            super(itemView);
            mName = itemView.findViewById(R.id.One_Text);
        }
    }

    class TwoHolder extends RecyclerView.ViewHolder {
        private ImageView mImage;

        public TwoHolder(@NonNull View itemView) {
            super(itemView);
            mImage = itemView.findViewById(R.id.Two_Image);
        }
    }

    public interface ItemClick {
        void setOnItem(View v, int position);
    }

    private ItemClick itemClick;

    public void setOnItemClick(ItemClick itemClick) {
        this.itemClick = itemClick;
    }

    @Override
    public void onClick(View v) {
        if (itemClick != null) {
            itemClick.setOnItem(v, (int) v.getTag());
        }
    }
}

package soexample.umeng.com.recycleview_demo_day13;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.widget.Toast;

import java.util.ArrayList;

import soexample.umeng.com.recycleview_demo_day13.adapter.MoreAdapter;
import soexample.umeng.com.recycleview_demo_day13.bean.BeautyBean;

public class MoreItemDemoActivity extends AppCompatActivity {
    private ArrayList<BeautyBean> mList = new ArrayList<>();
    private RecyclerView mRecy;
    private MoreAdapter mAdapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_grid_demo);
        initViews();
        initData();
        mAdapter = new MoreAdapter(mList);
        mRecy.setAdapter(mAdapter);
        mAdapter.setOnItemClick(new MoreAdapter.ItemClick() {
            @Override
            public void setOnItem(View v, int position) {
                Toast.makeText(MoreItemDemoActivity.this, mList.get(position).getName() + "", Toast.LENGTH_SHORT).show();
            }
        });
    }

    private void initData() {
        for (int i = 0; i < 20; i++) {
            mList.add(new BeautyBean("item:" + i, R.mipmap.xingan));
        }
    }

    private void initViews() {
        mRecy = findViewById(R.id.More_Recy);
        LinearLayoutManager layoutManager = new LinearLayoutManager(this);
        mRecy.setLayoutManager(layoutManager);
    }
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章