概述
今天是初次接触到这个RecyclerView,对她的唯一的感觉就是爱不释手哈!绝对是“一用倾人城,再用倾人国”的,根本停不下来的呢!简直甩ListView几条街的存在,接下来让我们一睹芳容吧!
基本使用先来个简单的例子过下手!
第一步增加依赖包
compile 'com.android.support:appcompat-v7:26.+'
compile 'com.android.support.constraint:constraint-layout:1.0.0-alpha7'
testCompile 'junit:junit:4.12'
compile 'com.android.support:percent:26.0.0-alpha1'
compile 'com.android.support:recyclerview-v7:26.0.0-alpha1'
第二步
xml中引入控件
第三步
建立布局文件
看下我们可爱的冰淇淋,哈哈,你是不是也饿了?
建立一个Icecream类
package sangxin.recyclerview;
/**
* Created by Administrator on 2017/7/14 0014.
*/
public class Icecream {
int Ice_image;
String Ice_name;
public Icecream(int Ice_image,String Ice_name){
this.Ice_image=Ice_image;
this.Ice_name=Ice_name;
}
public void setIce_image(int ice_image) {
Ice_image = ice_image;
}
public void setIce_name(String ice_name) {
Ice_name = ice_name;
}
public int getIce_image() {
return Ice_image;
}
public String getIce_name() {
return Ice_name;
}
}
第五步
用过ListView的童鞋肯定清楚,如果要优化加载速度肯定离不开一个叫做ViewHolder的东东,回头有时间在详细讲一下ViewHolder,今天我们先用着。 再建立一个用于优化的类!这个类的主要作用是通过IceViewHold的构造方法方法,用view找到image和text的id,以便下步使用。
package sangxin.recyclerview;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
/**
* Created by Administrator on 2017/7/14 0014.
*/
public class IceViewHold extends RecyclerView.ViewHolder {
ImageView imageView;
TextView textView;
public IceViewHold(View itemView) {
super(itemView);
imageView=itemView.findViewById(R.id.list_image);
textView=itemView.findViewById(R.id.list_textView);
}
}
第六步
为我们的RecyclerView建立一个Adapter,告诉你个小秘密我们的RecycleView有我们自己的Adapter。来看看吧!
package sangxin.recyclerview;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import java.util.List;
/**
* Created by Administrator on 2017/7/14 0014.
*/
public class IceCreamAdapter extends RecyclerView.Adapter{
private List icelist;
public IceCreamAdapter(List list){
this.icelist=list;
}
@Override
public IceViewHold onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.icecream_list_item,parent,false);
IceViewHold iceViewHold =new IceViewHold(view);
return iceViewHold;
}
@Override
public void onBindViewHolder(IceViewHold holder, int position) {
Icecream icecream = icelist.get(position);
holder.imageView.setImageResource(icecream.getIce_image());
holder.textView.setText(icecream.getIce_name());
}
@Override
public int getItemCount() {
return icelist.size();
}
}
第七步
终于回到主Activity了!我们来看下代码和运行效果吧!
package sangxin.recyclerview;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import java.util.ArrayList;
import java.util.List;
public class MainActivity_RecyclerView extends AppCompatActivity {
List ice_list ;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.recycler_view);
ice_list=new ArrayList();
AddDate();
RecyclerView recyclerView = (RecyclerView) findViewById(R.id.RecyclerView);
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(MainActivity_RecyclerView.this);
IceCreamAdapter iceCreamAdapter = new IceCreamAdapter(ice_list);
recyclerView.setLayoutManager(linearLayoutManager);
recyclerView.setAdapter(iceCreamAdapter);
}
void AddDate(){
Icecream icecream01 = new Icecream(R.drawable.icecream01,"冰淇淋01");
ice_list.add(icecream01);
Icecream icecream02 = new Icecream(R.drawable.icecream02,"冰淇淋02");
ice_list.add(icecream02);
Icecream icecream03 = new Icecream(R.drawable.icecream03,"冰淇淋03");
ice_list.add(icecream03);
Icecream icecream04 = new Icecream(R.drawable.icecream04,"冰淇淋04");
ice_list.add(icecream04);
Icecream icecream05 = new Icecream(R.drawable.icecream05,"冰淇淋05");
ice_list.add(icecream05);
Icecream icecream06 = new Icecream(R.drawable.icecream06,"冰淇淋06");
ice_list.add(icecream06);
Icecream icecream07 = new Icecream(R.drawable.icecream07,"冰淇淋07");
ice_list.add(icecream07);
Icecream icecream08 = new Icecream(R.drawable.icecream08,"冰淇淋08");
ice_list.add(icecream08);
Icecream icecream09 = new Icecream(R.drawable.icecream09,"冰淇淋09");
ice_list.add(icecream09);
Icecream icecream10 = new Icecream(R.drawable.icecream10,"冰淇淋10");
ice_list.add(icecream10);
Icecream icecream11 = new Icecream(R.drawable.icecream11,"冰淇淋11");
ice_list.add(icecream11);
Icecream icecream12 = new Icecream(R.drawable.icecream12,"冰淇淋12");
ice_list.add(icecream12);
Icecream icecream13 = new Icecream(R.drawable.icecream13,"冰淇淋13");
ice_list.add(icecream13);
Icecream icecream14 = new Icecream(R.drawable.icecream14,"冰淇淋14");
ice_list.add(icecream14);
Icecream icecream15 = new Icecream(R.drawable.icecream15,"冰淇淋15");
ice_list.add(icecream15);
Icecream icecream16 = new Icecream(R.drawable.icecream16,"冰淇淋16");
ice_list.add(icecream16);
Icecream icecream17 = new Icecream(R.drawable.icecream17,"冰淇淋17");
ice_list.add(icecream17);
Icecream icecream18 = new Icecream(R.drawable.icecream18,"冰淇淋18");
ice_list.add(icecream18);
Icecream icecream19 = new Icecream(R.drawable.icecream19,"冰淇淋19");
ice_list.add(icecream19);
Icecream icecream20 = new Icecream(R.drawable.icecream20,"冰淇淋20");
ice_list.add(icecream20);
}
}
先看下这个界面,我们再开始下一步的工作!
关于有时候,recyclerview会越滚越长的原因,这个很好解决,看看自己的item布局里面的,height全部改为wrap_content就OK了!