Android 中 RecyclerView的用法(一)
阿新 • • 發佈:2018-12-15
RecyclerView
- 許可權
implementation 'com.android.support:recyclerview-v7:28.0.0'
- 首先RecyclerView非常的方便簡單適用,實用性很強,用於實現某些特定的佈局,意義很重大.
- 這裡第一篇先簡單的告訴大家如何快速使用其中的行向與網格佈局.還有第三種瀑布流稍後會補齊.
- 先新增許可權
- 設定介面卡就完成了RecyclerView的簡單使用.
先從Activity中填寫,要知道其可以實現三種方式的佈局,這裡先簡單的講一下前面兩種簡單的行向與網格佈局.
程式碼中的行向佈局已被我註釋掉,
顯示的是網格佈局…
public class MainActivity extends AppCompatActivity { //介面卡及元件 RecycleAdapter adapter; private RecyclerView recycle; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //元件 recycle = (RecyclerView) findViewById(R.id.recycle); //初始化介面卡 adapter = new RecycleAdapter(this); //呼叫介面卡中的addItem方法填入資料 for (int i = 0; i < 60; i++) { adapter.addItem("北京的第"+i+"天"); } /** * 行向佈局 */ //設定管理 //LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this); //linearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL); // recycle.setLayoutManager(linearLayoutManager); /** * 縱向佈局 * 第二個引數為列數 * 一行為三列 */ GridLayoutManager gridLayoutManager = new GridLayoutManager(this,3); //設定管理 recycle.setLayoutManager(gridLayoutManager); //設定介面卡 recycle.setAdapter(adapter); } }
這裡就介紹介面卡
以下是注意點:
1.一定要繼承android.support.v7.widget.RecyclerView下的Adapter
2.<> 這裡面的是自定義的介面卡類名.自定義的ViewHolder名,可根據個人的喜好定義
3.<>這裡面是泛型,
4.寫完根據爆紅,新增相應的方法.會出來三個方法,依次為onCreateViewHolder,onBindViewHolder,getItemCount,註釋中有詳解.不再過多點綴…
public class RecycleAdapter extends RecyclerView.Adapter<RecycleAdapter.MyHolder> { //前面傳遞過來的上下文 Context context; List<String> list = new ArrayList<>(); //構造 public RecycleAdapter(Context context ) { this.context = context; } /** * 這個方法是用來建立viewHolder的 * 就是引用xml傳送的viewHolder的 * * */ @NonNull @Override public RecycleAdapter.MyHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) { //載入返回 View view = LayoutInflater.from(context).inflate(R.layout.item_list,viewGroup,false); MyHolder myHolder = new MyHolder(view); return myHolder; } /** * 第一個引數: 自定義ViewHolder * 第二個引數: i 尋找位置 * 這個方法裡面就是用來設定 * */ @Override public void onBindViewHolder(@NonNull RecycleAdapter.MyHolder myHolder, final int i) { //設定TextView String s = list.get(i); myHolder. tv.setText(s); //點選條目 myHolder.itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(context, "點選了第"+i+"條", Toast.LENGTH_SHORT).show(); } }); //點選元件 myHolder.tv.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(context, "點選了"+list.get(i), Toast.LENGTH_SHORT).show(); } }); } /** * * 獲取list長度 * */ @Override public int getItemCount() { return list.size(); } //MainActivity中的新增list集合的方法(按照個人習慣走,你也可以在Activity中新增足夠的list) //Activity中新增list之後,,傳遞引數時為上下文和list集合 //這個在繼承介面卡後是沒有的..... public void addItem(String s){ list.add(s); } /** * 這個是自定義的ViewHolder繼承的 RecyclerView.ViewHolder *用來尋找元件 * */ class MyHolder extends RecyclerView.ViewHolder{ TextView tv ; public MyHolder(@NonNull View itemView) { super(itemView); //新增元件就好 tv = itemView.findViewById(R.id.list_textView); } } }
佈局檔案
MainActivity中
<android.support.v7.widget.RecyclerView
android:id="@+id/recycle"
android:layout_width="match_parent"
android:layout_height="match_parent">
</android.support.v7.widget.RecyclerView>
list_textView 佈局
<TextView
android:id="@+id/list_textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#f4a"
android:textSize="20dp"
android:text="測試資料"/>
效果一
網格
效果二
行向