編輯:關於android開發
首先我們知道RecyclerView組件是ListView的升級版,今天先介紹基礎的RecyclerView的基本布局RecyclerView.Adapter和LayoutManager
第一:
LayoutManager
我們知道ListView只能在垂直方向上滾動,Android API沒有提供ListView在水平方向上面滾動的支持。或許有多種方式實現水平滑動,ListView並不是設計來做這件事情的。但是RecyclerView相較於ListView,在滾動上面的功能擴展了許多。它可以支持多種類型列表的展示要求,主要如下:
LinearLayoutManager ,可以支持水平和豎直方向上滾動的列表。
StaggeredGridLayoutManager ,可以支持交叉網格風格的列表,類似於瀑布流或者Pinterest。
GridLayoutManager ,支持網格展示,可以水平或者豎直滾動,如展示圖片的畫廊。
因此RecyclerView相對於ListView來說自定義性擴展了很多
第二:
RecyclerView.Adapter和ListView的BaseAdapter不同之處在於:BaseAdapter都是在getView一個方法中實現的,包括View的實例化以及組件的綁定。在RecyclerView.Adapter中,則提供了RecyclerView.ViewHolder機制,這個類必須我們自己定義,主要是用來保存視圖的類,主要在onCreateViewHolder中實現View的保存
public static class ViewHolder extends RecyclerView.ViewHolder
{
public TextView itemText;
public ViewHolder(View itemView) {
super(itemView);
itemText = (TextView)findViewById(R.id.item_text);
}
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = layoutInflater.inflate(R.layout.item_recyclerview,parent,false);
return new ViewHolder(view);
}
另外還需要實現getCount()方法,也就是返回item的數量,另外 onBindViewHolder()方法實現對應的組件和數據綁定
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
((ViewHolder)holder).itemText.setText(titleList.get(position));
}
以下為我寫的基本實現RecyclerView功能的一段小代碼
/**
適配器類
**/
public class RecyclerAdapter extends RecyclerView.Adapter { private List<String> titleList; private LayoutInflater layoutInflater; public RecyclerAdapter(Context context) { this.titleList = new ArrayList<>(); for(int i=0;i<30;i++) { titleList.add("item"+i); } layoutInflater = LayoutInflater.from(context); } @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = layoutInflater.inflate(R.layout.item_recyclerview,parent,false); return new ViewHolder(view); } @Override public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { ((ViewHolder)holder).itemText.setText(titleList.get(position)); } @Override public int getItemCount() { return titleList.size(); } public static class ViewHolder extends RecyclerView.ViewHolder { //public TextView itemText; public ViewHolder(View itemView) { super(itemView); } } }
/**
主界面代碼
**/
mRecyclerView = (RecyclerView)pageList.get(SPORT).findViewById(R.id.recyclerview); mRecyclerView.setHasFixedSize(true); mLinearLayoutManager = new LinearLayoutManager(this); mLinearLayoutManager.setOrientation(OrientationHelper.VERTICAL); RecyclerAdapter mRecyclerAdapter = new RecyclerAdapter(this); mRecyclerView.setLayoutManager(mLinearLayoutManager); mRecyclerView.setAdapter(mRecyclerAdapter);
注:pageList.get(SPORT)為自己定義的一個實例化view,讀者可以根據自己需要定制不同的xml文件並將其實例化為view
Android項目:手機安全衛士(16)—— 復雜 ListView淺析 Android項目:手機安全衛士(16)—— 復雜 ListView 1
在android上要實現類似Launch的抽屜效果,大家一定首先會想起SlidingDrawer。
使用Netty進行Android與Server端通信實現文字發送接收與圖片上傳,ANOTHER TITLE: Let’s use netty to achie
上次介紹了Activity以及Intent的使用,這次就介紹Service,如果把Activity比喻為前台程