Is there any simple implementation or tutorial to implement RecyclerView in android?

前端 未结 2 1056
后悔当初
后悔当初 2020-12-12 00:39

I am trying to port my existing project to material design but am unable to understand the implementation of RecyclerView. My old code uses a ListView but I want GMail app l

2条回答
  •  自闭症患者
    2020-12-12 01:21

    RecyclerView Adapter Example:

    1. Adapter issue can be solved using below code:

      public class MyAdapter extends RecyclerView.Adapter         
      {
      
      private final Context mContext;
      private List mData1, mData2;
      
      public MyAdapter(Context mContext, String[] data1, String[] data2) {
      this.mContext = mContext;
      if (data1 != null)
          mData1 = new ArrayList(Arrays.asList(data1));
      else
          mData1 = new ArrayList();
      
      if (data2 != null)
          mData2 = new ArrayList(Arrays.asList(data2));
      else
          mData2 = new ArrayList();
      }
      
      public void add(String s, int position) {
      position = position == -1 ? getItemCount() : position;
      mData1.add(position, s);
      
      notifyItemInserted(position);
      }
      
      public void remove(int position) {
      if (position < getItemCount()) {
          mData1.remove(position);
          notifyItemRemoved(position);
      }
      }
      
      @Override
      public MyViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
      LayoutInflater inflater = LayoutInflater.from(viewGroup.getContext());
      View itemView = inflater.inflate(R.layout.list_item, viewGroup, false);
      
      return new MyViewHolder(itemView);
      }
      
      @Override
      public void onBindViewHolder(MyViewHolder myViewHolder, final int position) {
          myViewHolder.tv1.setText(mData1.get(position));
      myViewHolder.tv2.setText(mData2.get(position));
      myViewHolder.itemView.setOnClickListener(new OnClickListener() {
      
          @Override
          public void onClick(View v) {
              // TODO Auto-generated method stub
              clickListener.onClick(v, position);
          }
      });
      }
      
      @Override
      public int getItemCount() {
      return mData1.size();
      }
      
      ClickListener clickListener;
      
      public void setClickListener(ClickListener clickListener) {
      this.clickListener = clickListener;
      }
      
      public interface ClickListener {
      public void onClick(View v, int pos);
      
      }
      
      public static class MyViewHolder extends RecyclerView.ViewHolder {
      protected TextView tv1;
      protected TextView tv2;
      
      public MyViewHolder(View itemView) {
          super(itemView);
          tv1 = (TextView) itemView.findViewById(R.id.txt1);
          tv2 = (TextView) itemView.findViewById(R.id.txt2);
      
      }
      
      }
      }
      

    Usage is as below:

    MyAdapter adapter=....;
    adapter.setClickListener(new ClickListener() {
    
            @Override
            public void onClick(View v, int pos) {
                // do whatever you want
            }
        });
    
    1. There is not any Simple way to do that. But i would suggest you one workaround for this. Add below view as a divider at the bottom inside your list_item.xml.

       
      
    2. Item click listener is also resolved in point no. 1 above.

    I hope this would help you.

提交回复
热议问题