The most basic usage of RecycleView

After learning Android for so long, ListView is the first choice for projects, and RecycleView is basically never used, because ListView is relatively simple to implement. . . . RecycleView is under the V7 package, first add the dependency package

compile 'com.android.support:recyclerview-v7:24.0.0'

The following is the most basic ReCycleView usage:

mRecyclerView = findView(R.id.id_recyclerview);

//set the layout manager

mRecyclerView.setLayoutManager (layout);

//设置adaptermRecyclerView.setAdapter(adapter)

//Set Item to add and remove animations

mRecyclerView.setItemAnimator(new DefaultItemAnimator());

//add dividing line

mRecyclerView.addItemDecoration(new DividerItemDecoration(getActivity(), DividerItemDecoration.HORIZONTAL_LIST));


public class HomeActivity extends ActionBarActivity{
    private RecyclerView mRecyclerView;
    private List<String> mDatas;
    private HomeAdapter mAdapter;

    @Override
    protected void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_single_recyclerview);


        initData();
        mRecyclerView = (RecyclerView) findViewById(R.id.id_recyclerview);      

	    adapter = new HomeAdapter(this,list);
LinearLayoutManager manager = new LinearLayoutManager(this);
    manager.setOrientation(1);//O为横向,1为纵向
    recyclerView.setLayoutManager(manager);
    recyclerView.setAdapter(adapter);	    			
    }


    protected void initData(){
        mDatas = new ArrayList<String>();
        for (int i = 0; i < 20; i++)
        {
            mDatas.add("我是RecycleView");
        }
    }

    class HomeAdapter extends RecyclerView.Adapter<HomeAdapter.MyViewHolder>{

	   @Override
	   public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType)
	   {
  	     MyViewHolder holder = new MyViewHolder(LayoutInflater.from(
         	      context).inflate(R.layout.recycleview_item_layout, parent,
       	           false));
 	      return holder;
	   }

        @Override
        public void onBindViewHolder(MyViewHolder holder, int position){
            holder.tv.setText(mDatas.get(position));
        }

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

	    class MyViewHolder extends RecyclerView.ViewHolder
	    {

        	ImageView tv;

   	     public MyViewHolder(View view)
  	      {
       	     super(view);
      	      tv = (ImageView) view.findViewById(R.id.item_image);
   	      }
	    }

    }
}

RecycleView的ViewHolder是要自己写的,在建立Adapter的时候要重写三个方法,onCreateViewHolder中通过构造方法将布局传到ViewHolder中,ViewHolder中在findViewById控件,onBindViewHolder方法中可以给控件绑定数据。


用RecycleView写瀑布流很简单,把设置布局管理器改一改,然后在把控件的高度取随机数就ok了。

第一步:设置布局管理器

		StaggeredGridLayoutManager manager = new StaggeredGridLayoutManager(5,1);//5是几行或者几列,根据第二个参数,0为横向
		manager.setOrientation(1);//O为横向,1为纵向
		recyclerView.setLayoutManager(manager);
	第二步:控件随机高度
 
 
		Random r = new Random();
		int randomInt = r.nextInt(180) + 60;
		LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) holder.tv.getLayoutParams();
		params.height = randomInt;
		holder.tv.setLayoutParams(params);
The waterfall flow is simply completed. This is the most basic usage, and I'm still learning it myself. A rookie like me has to take off quickly.
		

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=325806339&siteId=291194637