Android開發之RecyclerView(一)初步使用
阿新 • • 發佈:2019-01-30
首先要感謝前面的大佬們的總結,給了我站在巨人肩膀上的機會。文中有不對的地方還望大佬指出,如有大佬覺的侵權的地方還望指出,鄙人將以最快速度修改!好了,話不多少了,開始開車!
第一步:匯入RecyclerView
compile 'com.android.support:recyclerview-v7:26.+'這裡對於初次瞭解的人有一點要注意,v7包後面的版本號需要和
compile 'com.android.support:appcompat-v7:26.+'
保持一致,以免報錯;
第二步:就是直接再佈局中引用,和listview用法基本一樣;
<android.support.v7.widget.RecyclerView第三步:在程式碼中呼叫,這裡要注意了,由於RecyclerView的靈活性,可以通過程式碼控制不同的展示樣式,人狠話不多,直接粘程式碼,具體如下:android:id="@+id/recyclerview" android:layout_width="match_parent" android:layout_height="match_parent" />
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(二)同一控價多樣式佈局