//MainActivity
public class MainActivity extends AppCompatActivity {
List<String> list = new ArrayList<>();
private RecyclerView recyClerView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
recyClerView = findViewById(R.id.main_recycler);
for (int i = 0; i < 20; i++) {
list.add("item " + i);
}
final MyAdapter myAdapter = new MyAdapter(list);
//1.类似listview条目的形式
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);
recyClerView.setLayoutManager(linearLayoutManager);
//设置item线性摆放的方向,默认是垂直的
// linearLayoutManager.setOrientation(LinearLayoutManager.HORIZONTAL);
//2.类似gridView的形式
// GridLayoutManager gridLayoutManager = new GridLayoutManager(this, 3);
// gridLayoutManager.setOrientation(LinearLayoutManager.HORIZONTAL);
// recyClerView.setLayoutManager(gridLayoutManager);
//3.瀑布流的形式
// StaggeredGridLayoutManager staggeredGridLayoutManager = new StaggeredGridLayoutManager(2,StaggeredGridLayoutManager.VERTICAL);
// recyClerView.setLayoutManager(staggeredGridLayoutManager);
myAdapter.setOnItemClickListener(new MyAdapter.OnItemClickListener() {
@Override
public void onItemClick(View view, int position) {
list.remove(position);
// 这个方法没有动画效果,而且整个刷新
myAdapter.notifyDataSetChanged();
// //我们用带动画的局部刷新的方法
// myAdapter.notifyItemRemoved(position);
}
});
recyClerView.setAdapter(myAdapter);
//设置默认的动画
recyClerView.setItemAnimator(new DefaultItemAnimator());
//添加分割线
DividerItemDecoration dividerItemDecoration = new DividerItemDecoration(this, DividerItemDecoration.VERTICAL);
//设置分割线的颜色
dividerItemDecoration.setDrawable(getResources().getDrawable(R.drawable.item_decoration));
recyClerView.addItemDecoration(dividerItemDecoration);
}
}
//Adapter
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyViewHolder> {
List<String> list = new ArrayList<>();
public MyAdapter(List<String> list) {
this.list = list;
}
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View itemView = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_recycler, parent, false);
final MyViewHolder myViewHolder = new MyViewHolder(itemView);
return myViewHolder;
}
@Override
public void onBindViewHolder(final MyViewHolder holder, final int position) {
holder.itemContentTv.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (onItemClickListener != null) {
onItemClickListener.onItemClick(v, position);
}
}
});
holder.itemContentTv.setText(list.get(position));
}
@Override
public int getItemCount() {
return list == null ? 0 : list.size();
}
public class MyViewHolder extends RecyclerView.ViewHolder {
//viewHolder内部有一个itemView成员变量代表的就是整个item布局
private final TextView itemContentTv;
public MyViewHolder(final View itemView) {
super(itemView);
itemContentTv = itemView.findViewById(R.id.tv_item_content);
}
}
//给RecyclerView设置条目点击监听
private OnItemClickListener onItemClickListener;
public void setOnItemClickListener(OnItemClickListener onItemClickListener) {
this.onItemClickListener = onItemClickListener;
}
public interface OnItemClickListener {
void onItemClick(View view, int position);
}
}