這只是我在學Android過程中對于所學知識的鞏固和方便日后查詢的學習筆記,能幫助到有需要的和我一樣的初學者就更好了
RecyclerView作為ListView的升級版功能自然是多得多,使用起來略微比ListView復雜一點
首先
要在gradle中添加依賴
compile 'com.android.support:recyclerview_v7:24.2.1'
其實一看就知道是support庫中的,v7后面的數字修改為此閉包中前面的v7版本號即可
其次
和ListView相同的是都要有布局文件item.xml、所要加載的對象的類(ListView篇中的News類)
不同就在于Adapter類了
新建MyAdapter繼承RecyclerView.Adapter<MyAdapter.ViewHolder>類并重寫
1.構造方法
2.ViewHolder onCreateViewHolder(ViewGroup parent ,int ViewType)
3.onBindViewHolder(ViewHolder holder ,int position)
4.int getItemCount()
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder>{
//很顯然<>中的參數為我們新建的MyAdapter的內部類
private List<News> mNewsList;
static class ViewHolder extends RecyclerView.ViewHolder{
View Newsviwe;
TextView title;
TextView content;
public ViewHolder(View v){
super(v);
Newsview=v;
title=(TextView)v.findViewById(....);
content=(TextView)v.findViewById(....);
}
}
public MyAdapter(List<News> Newslist){
mNewslist=Newslist;
}
@override
public ViewHolder onCreateViewHolder(ViewGroup parent ,int ViewType){
View view=LayoutInflater.from(parent.getcontext).inflate(R.layout.item ,parent ,false);
final ViewHolder holder=new ViewHolder(view);
holder.NewsView.setonClickListener(new View.onClickListener(){
//此為整個條目(其他內容也定義點擊事件是為空白處)
public void onclick(View v){
//點擊響應的邏輯
}
});
holder.title.setonClickListener(......);//此為標題自己的點擊響應
holder.content.setonClickListener(......)//此為摘要的點擊響應
//以上體現了不同控件可以設置不同的點擊響應
return holder;
}//加載布局、創建holder、設置點擊事件
@override
public void onBindViewHolder(ViewHolder holder ,int position){
News news=mNewslist.get(position);
holder.title.setText(......);
holder.content.setText(......);
}//為每一項內容賦值
@override
public int getItemCount(){
return mNewslist.size();
}//返回總的item數量
}
使用時
List<News> newslist;
RecyclerView recycler=(RecyclerView)findViewById(R.id.recycler_view);
LinearLayoutManager manager=new LinearLayoutManager(context);
manager.setOrientation(LinearLayoutManager.HORIZOINTAL);
recycler.setLayoutManager(manager);
MyAdapter adapter=new MyAdapter(newslist);
recycler.setAdapter(adapter);
滾動方向
水平方向
LinearLayoutManager manager=new LinearLayoutManager(this);
manager.setOrientation(LinearLayoutManager.HORIZONTAL);
recycler.setLayoutManager(manager);
瀑布流
StaggeredGridLayoutManager manager=new StaggeredGridLayoutManager(3,StaggeredGrideLayoutManager.VERTICAL);
recycler.setLayoutManager(manager);
//參數中3為列(排)數