Android開發之RecyclerView(一)初步使用

首先要感謝前面的大佬們的總結,給了我站在巨人肩膀上的機會。文中有不對的地方還望大佬指出,如有大佬覺的侵權的地方還望指出,鄙人將以最快速度修改!好了,話不多少了,開始開車!

第一步:導入RecyclerView

compile 'com.android.support:recyclerview-v7:26.+'
這裏對於初次瞭解的人有一點要注意,v7包後面的版本號需要和
compile 'com.android.support:appcompat-v7:26.+'
保持一致,以免報錯;

第二步:就是直接再佈局中引用,和listview用法基本一樣;

<android.support.v7.widget.RecyclerView
    android:id="@+id/recyclerview"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

第三步:在代碼中調用,這裏要注意了,由於RecyclerView的靈活性,可以通過代碼控制不同的展示樣式,人狠話不多,直接粘代碼,具體如下:

public class MainActivity extends AppCompatActivity {

    private RecyclerView recyclerview;
    private List<Map<String,Object>> list;
    private MyAdapter adapter;
    private LinearLayoutManager layoutManager;
    private GridLayoutManager gridLayoutManager;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        recyclerview = (RecyclerView) findViewById(R.id.recyclerview);
        list = getData();

        //創建默認的線性LayoutManager,樣式類似於ListView
        layoutManager=new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false);
        recyclerview.setLayoutManager(layoutManager);

        /*//創建默認的表格GridLayoutManager,樣式類似於GridView,這裏可以直接使用數字控制每行展示的列數
        gridLayoutManager=new GridLayoutManager(this,2);
        recyclerview.setLayoutManager(gridLayoutManager);*/

        //如果可以確定每個item的高度是固定的,設置這個選項可以提高性能
        recyclerview.setHasFixedSize(true);

        //創建並設置Adapter
        adapter = new MyAdapter(list);
        //adapter.addData(1);
        adapter.deleateData(20);
        recyclerview.setAdapter(adapter);
  
        //設置分隔線
        recyclerview.addItemDecoration(new DividerItemDecoration(this , DividerItemDecoration.HORIZONTAL));

        //設置增加或刪除條目動畫
        recyclerview.setItemAnimator(new DefaultItemAnimator());


    }

    public List<Map<String,Object>> getData() {
        list=new ArrayList<>();
        for (int i=0;i<21;i++){
            Map<String,Object> map= new HashMap<>();
            map.put("image",R.mipmap.ic_launcher);
            map.put("name","fuck");
            list.add(map);
        }
        return list;
    }

}
第四步,給RecyclerView創建adapter,就不廢話了,直接粘貼代碼

public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder>{
    private List<Map<String,Object>> list;

    public MyAdapter(List<Map<String,Object>>list) {
        this.list = list;
    }
	//給adapter添加布局加載
    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view= LayoutInflater.from(parent.getContext()).inflate(R.layout.recyitem_layout,parent,false);
        ViewHolder vh=new ViewHolder(view);
        return vh;
    }


    public void onBindViewHolder(final ViewHolder holder,final int position) {

	//使用adapter裏面的控價進行展示操作

        holder.iv_show.setImageResource(R.mipmap.ic_launcher);
        holder.tv_show.setText("基佬");

    }

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

    public static class ViewHolder extends RecyclerView.ViewHolder{
        TextView tv_show;
        ImageView iv_show;
        public ViewHolder(View itemView) {
            super(itemView);

            tv_show=itemView.findViewById(R.id.tv_show);
            iv_show=itemView.findViewById(R.id.iv_show);
        }
    }

   
第五步;展示adapter
	//創建並設置Adapter
	adapter = new MyAdapter(list);
	//adapter.addData(1);
	adapter.deleateData(20);
	recyclerview.setAdapter(adapter);

本期結束,第一次寫博客,有錯誤和不足請多多包涵,謝謝!
下一期Android開發之RecyclerView(二)同一控價多樣式佈局

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