Recyclerview基础+接口回调点击事件+多布局+随机值生成瀑布流
效果图1
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/9abe71bc2907bbe6f2c4f15d07bf0f86.png)
效果图2
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/5ff6eacfbccab0bec1be383e6eee1a50.png)
效果图3(瀑布流)
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/0b7ec62de0f0703514ce6544b62d8043.png)
java代码
package bw.com.androidthird;
import android.graphics.drawable.Drawable;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.DefaultItemAnimator;
import android.support.v7.widget.DividerItemDecoration;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.StaggeredGridLayoutManager;
import java.util.ArrayList;
public class MainActivity extends AppCompatActivity {
RecyclerView recyclerView;
ArrayList<String> list;
RVAdapetr rvAdapetr;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
recyclerView = findViewById(R.id.rv);
StaggeredGridLayoutManager manager = new StaggeredGridLayoutManager(2,StaggeredGridLayoutManager.VERTICAL);
recyclerView.setLayoutManager(manager);
DividerItemDecoration dividerItemDecoration = new DividerItemDecoration(this,DividerItemDecoration.VERTICAL);
Drawable drawable = getResources().getDrawable(R.drawable.recycleview_item_divder_style);
dividerItemDecoration.setDrawable(drawable);
recyclerView.addItemDecoration(dividerItemDecoration);
DefaultItemAnimator animator = new DefaultItemAnimator();
animator.setRemoveDuration(200);
animator.setAddDuration(200);
recyclerView.setItemAnimator(animator);
initData();
rvAdapetr = new RVAdapetr(MainActivity.this,list);
recyclerView.setAdapter(rvAdapetr);
rvAdapetr.setLisnter(new RecyclerViewLisnter() {
@Override
public void itemClick(int i) {
rvAdapetr.deleteData(i);
}
@Override
public void longClick(int i) {
ArrayList<String> newList = new ArrayList<>();
newList.add("张三");
newList.add("李四");
newList.add("王五");
rvAdapetr.addData(newList);
}
});
}
public void initData(){
list = new ArrayList<>();
for (int i= 65;i<91;i++){
char c = (char)i;
list.add(c+"");
}
}
}
适配器代码
package bw.com.androidthird;
import android.content.Context;
import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import android.text.Layout;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import java.util.ArrayList;
public class RVAdapetr extends RecyclerView.Adapter<RVAdapetr.RVholder>{
Context context;
ArrayList<String> data;
RecyclerViewLisnter lisnter;
public RVAdapetr(Context context, ArrayList<String> data){
this.context =context;
this.data = data;
}
public void setLisnter(RecyclerViewLisnter lisnter){
this.lisnter = lisnter;
}
@NonNull
@Override
public RVholder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
View view = LayoutInflater.from(context).inflate(R.layout.layout_rv,viewGroup,false);
return new RVholder(view);
}
@Override
public void onBindViewHolder(@NonNull RVholder rVholder, final int i) {
rVholder.textView.setText(data.get(i));
int num = (int) (Math.random()*101+100);
ViewGroup.LayoutParams params = rVholder.textView.getLayoutParams();
params.height = num;
rVholder.textView.setLayoutParams(params);
rVholder.textView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
lisnter.itemClick(i);
}
});
rVholder.textView.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
lisnter.longClick(i);
return true;
}
});
}
@Override
public int getItemCount() {
return data.size();
}
/**
*
* */
public void addData(ArrayList<String> newList){
data.addAll(newList);
notifyDataSetChanged();
notifyItemInserted(0);
}
public void deleteData(int index){
data.remove(index);
notifyItemRemoved(index);
notifyItemRangeChanged(index,data.size());
}
public void updateData(ArrayList<String> refreshList){
data.clear();
data.addAll(refreshList);
notifyDataSetChanged();
}
class RVholder extends RecyclerView.ViewHolder{
private TextView textView;
public RVholder(@NonNull View itemView) {
super(itemView);
textView = itemView.findViewById(R.id.text01);
}
}
}
接口
package bw.com.androidthird;
public interface RecyclerViewLisnter {
public void itemClick(int i);
public void longClick(int i);
}