compile 'com.android.support:recyclerview-v7:26.0.0-alpha1'
//横向代码
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);
linearLayoutManager.setOrientation(LinearLayoutManager.HORIZONTAL);
rv.setLayoutManager(linearLayoutManager);
//设置水平两行Gridview
rv.setLayoutManager(new GridLayoutManager(MainActivity.this,2,GridLayoutManager.HORIZONTAL,false));
MainActivity代码
//找到控件id
rv = findViewById(R.id.rv);
myadapter = new Myadapter(MainActivity.this, list);
//给控件设置适配器
rv.setAdapter(myadapter);
// 类名.方法名调用 参数为接口的方法 new 类名.接口的名字 此为点击事件的方法
myadapter.huidiao(new Myadapter.Itemclick() {
@Override
public void itemclick(View view, int position) {
User u=new User(R.drawable.a,"你猜");
//添加数据的方法 方法定义在适配器中
myadapter.addlist(u,position);
//删除数据的方法
myadapter.removelist(position);
}
});
//设置动画
rv.setItemAnimator(new DefaultItemAnimator());
//必须设置 三种模式
rv.setLayoutManager(new LinearLayoutManager(MainActivity.this));
// rv.setLayoutManager(new GridLayoutManager(MainActivity.this,2));
// rv.setLayoutManager(new StaggeredGridLayoutManager(2,StaggeredGridLayoutManager.VERTICAL));
适配器的代码
/<Myadapter.Myhodler>为类名.优化类名
public class Myadapter extends RecyclerView.Adapter <Myadapter.Myhodler>{
private Context contect;
List<User> list;
private Itemclick item;
public Myadapter(Context contect, List<User> list) {
this.contect = contect;
this.list = list;
}
//找到自定义的xml布局
@Override
public Myhodler onCreateViewHolder(ViewGroup parent, int viewType) {
View view = View.inflate(contect, R.layout.my_rv, null);
//把view放到优化类里面
Myhodler myhodler=new Myhodler(view);
return myhodler;
}
//给控件设置数据
@Override
public void onBindViewHolder(final Myhodler holder, final int position) {
ImageLoader.getInstance().displayImage(list.get(position).getUserImg(),holder.iv);
holder.tv.setText(list.get(position).getName());
//item为接口的变量名
if (item!=null){
//holder为Myhodler holder的参数
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//调用接口的方法
item.itemclick(holder.itemView,position);
}
});
}
}
//优化类 有几个控件定义几个
class Myhodler extends RecyclerView.ViewHolder{
//提供set get方法
private ImageView iv;
private TextView tv;
public Myhodler(View itemView) {
super(itemView);
//这个必须有 有几个控件定义几个
this.tv=itemView.findViewById(R.id.tv);
this.iv=itemView.findViewById(R.id.iv);
}
}
//定义接口
public interface Itemclick{
void itemclick(View view,int position);
}
//定义方法 参数1为接口 2为接口的变量名
public void huidiao(Itemclick item){
this.item=item;
}
//添加数据的方法 在点击事件里面调用
public void addlist(User user,int position){
list.add(position,user);
//更新适配器
notifyItemInserted(position);//参数,位置,在那里插入了数据
}
//删除的方法
public void removelist(int position){
list.remove(position);
notifyItemRemoved(position);
notifyItemRangeChanged(position, list.size());
}
}