RecyclerView的簡單使用

1、RecyclerView仿listview(可以上下滑動,也可左右滑動)
關鍵代碼:

//實例化
 recyclerView= (RecyclerView) myView.findViewById(R.id.relistview);
  /**
   * RecyclerView.LayoutManager 抽象類
   * LinearLayoutManager 線性佈局管理器  縱向橫向
   */
 recyclerView.setLayoutManager(new LinearLayoutManager(context));

//使用recyclerView實現水平滾動的,下面的代碼不寫則默認的上下滾動listviewLinearLayoutManager linearLayoutManager=new LinearLayoutManager(context);
linearLayoutManager.setOrientation(LinearLayoutManager.HORIZONTAL);
recyclerView.setLayoutManager(linearLayoutManager);

//填充適配器
//list爲數據源,getData()方法略
list=getData();

 MyListViewAdapter adapter = new MyListViewAdapter(context, list);
 recyclerView.setAdapter(adapter);



以下是MyListViewAdapter

/**
 * 仿listview的適配器
 */
public class MyListViewAdapter  extends RecyclerView.Adapter<MyListViewAdapter.MyViewHolder>{

    private List<ListBean.DataBean> list;
    private Context context;
    //自定義的監聽事件
    private OnItemClickListener onItemClickListener;

    public MyListViewAdapter(Context context, List<ListBean.DataBean> list) {
        this.context = context;
        this.list = list;
    }

    public void setListener(OnItemClickListener onItemClickListener){
        this.onItemClickListener=onItemClickListener;
    }

    @Override
    public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    //R.layout.listview_item裏面就一個textview,這裏就不貼出啦
        View view= LayoutInflater.from(context).inflate(R.layout.listview_item,null);
        MyViewHolder viewHolder=new MyViewHolder(view);
        return viewHolder;
    }

    @Override
    public void onBindViewHolder(final MyViewHolder holder, int position) {  
            holder.tv_title.setText(list.get(position));
            //點擊事件
            if (onItemClickListener!=null){
                holder.itemView.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        int pos=holder.getLayoutPosition();
                        onItemClickListener.OnItemClickListener(v,pos);
                    }
                });

                holder.itemView.setOnLongClickListener(new View.OnLongClickListener() {
                    @Override
                    public boolean onLongClick(View v) {
                        int pos=holder.getLayoutPosition();
                        onItemClickListener.OnItemLongClickListener(v,pos);
                        return true;
                    }
                });
            }

    }

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

    class MyViewHolder extends RecyclerView.ViewHolder{

        TextView tv_title;

        public MyViewHolder(View itemView) {
            super(itemView);           
            tv_title = (TextView) itemView.findViewById(R.id.tv);           
        }
    }
}

以下是監聽事件的代碼:

public interface OnItemClickListener {
    //點擊事件
    void OnItemClickListener(View view,int posotion);
    //長按事件
    void OnItemLongClickListener(View view,int position);
}

完成

發佈了50 篇原創文章 · 獲贊 8 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章