Android讀書筆記之用RecyclerView顯示列表項
阿新 • • 發佈:2019-01-09
該讀書筆記是自己閱讀《Android程式設計權威指南》和《The.Big.Nerd.Ranch.Guide.2nd.Edition》(《Android程式設計權威指南》第二版)所做的一些筆記。
在上一篇文章(見:http://blog.csdn.net/u014285517/article/details/50331971)中只是在Fragment中放了一個TextView,略顯單薄。。。
這篇文章在Fragment中放個 RecyclerView來顯示一個0-99的列表資料。
首先來看核心的ListFragment的程式碼:
package com.example.zhan.fragmenttest; import android.app.Fragment; import android.os.Bundle; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; import java.util.ArrayList; import java.util.List; /** * Created by zhang on 12/16/2015. */ public class ListFragment extends Fragment { private RecyclerView mRecyclerView; private ItemAdapter mItemAdapter; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_list,container,false); mRecyclerView = (RecyclerView) view.findViewById(R.id.recycler_view); mRecyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));//不要忘了。。 //產生列表資料 List<Item> itemList = new ArrayList<>(); for (int i = 0;i < 100;i++) { Item item = new Item(); item.setId(i); itemList.add(item); } mItemAdapter = new ItemAdapter(itemList); mRecyclerView.setAdapter(mItemAdapter); return view; } private class ItemHolder extends RecyclerView.ViewHolder { private TextView mTextView; public ItemHolder(View itemView) { super(itemView); mTextView = (TextView) itemView; } } private class ItemAdapter extends RecyclerView.Adapter<ItemHolder> { private List<Item> mItems; public ItemAdapter(List<Item> items) { mItems = items; } @Override public ItemHolder onCreateViewHolder(ViewGroup viewGroup, int i) { LayoutInflater layoutInflater = LayoutInflater.from(getActivity()); View view = layoutInflater.inflate(android.R.layout.simple_list_item_1, viewGroup,false); return new ItemHolder(view); } @Override public void onBindViewHolder(ItemHolder viewHolder, int i) { Item item = mItems.get(i); //這裡開始直接傳數值,結果被當做資源ID了。。。。。 //然後就android.content.res.Resources$NotFoundException viewHolder.mTextView.setText(String.valueOf(item.getId())); } @Override public int getItemCount() { return mItems.size(); } } }
關於RecyclerView這裡不多講了。。
佈局檔案fragment_list.xml如下:
<android.support.v7.widget.RecyclerView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/recycler_view"
android:layout_height="match_parent"
android:layout_width="match_parent"/>
Activity部分程式碼幾乎沒變,就是把fragment =new BlankFragment();
改成了fragment = new ListFragment();這裡程式碼就不貼了,可以看Android Fragment學習一那篇部落格。
還有個表示列表項的類:
package com.example.zhan.fragmenttest; /** * Created by zhang on 12/16/2015. */ public class Item { private int id; public int getId() { return id; } public void setId(int id) { this.id = id; } }
這個列表項很簡單,不過你可以在此基礎上進行補充。