之前做一個應用商店類的項目,第一次使用RecyclerView,下面說說怎麼使用,這裏只說adapter使用
1,首先是Adapter 的繼承,不再像Listview繼承BaseAdapter,而是繼承 RecycleView.Adapter<>,注意後面的泛型是你的ViewHolder類型.
public class RecommendAdapter extends RecyclerView.Adapter<MyViewHolder> implements Observer {}
2,創建ViewHolder:
class MyViewHolder extends RecyclerView.ViewHolder{ TextView textView; ImageView imageView; Button button; LinearLayout downloadLayout; LinearLayout describeLayout; TextView sizeView; TextView statusView; TextView describeView; TextView size; TextView titleView; TextView rateView; ProgressBar progressBar; LinearLayout reconmmendItem; public MyViewHolder(View itemView) { super(itemView); titleView = (TextView) itemView.findViewById(R.id.app_type_count); textView = (TextView) itemView.findViewById(R.id.app_name_tv); imageView = (ImageView) itemView.findViewById(R.id.app_icon); button = (Button) itemView.findViewById(R.id.app_operation_bt); downloadLayout = (LinearLayout) itemView.findViewById(R.id.app_down_ll); describeLayout = (LinearLayout) itemView.findViewById(R.id.app_describe_ll); sizeView = (TextView) itemView.findViewById(R.id.app_size_tv); statusView = (TextView) itemView.findViewById(R.id.app_status_tv); describeView = (TextView) itemView.findViewById(R.id.app_describe_tv); size = (TextView) itemView.findViewById(R.id.app_down_size_tv); rateView = (TextView) itemView.findViewById(R.id.app_down_rate_tv); progressBar = (ProgressBar) itemView.findViewById(R.id.app_down_pb); reconmmendItem = (LinearLayout) itemView.findViewById(R.id.recommend_item); }
3,實現方法:
@Override public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = null; if(viewType == 0) { view = layoutInflater.inflate(R.layout.manage_item_text,parent,false); }else { view = layoutInflater.inflate(R.layout.recommend_item,parent,false); } MyViewHolder viewHolder = new MyViewHolder(view); return viewHolder; }
4: 綁定數據:
public void onBindViewHolder(final MyViewHolder holder, int position){}
這樣就搞定了,是不是比ListView的簡單一些,最後請記得設置佈局管理器,可以切換是Listview還是gridview.....
mRecyclerView.setLayoutManager(new LinearLayoutManager(getActivity(), LinearLayoutManager.VERTICAL, false));mRecyclerView.setLayoutManager(new GridLayoutManager(this,4));