XML1
:implementation ‘com.android.support:recyclerview-v7:28.0.0’
<android.support.v7.widget.RecyclerView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/card_recycerview">
</android.support.v7.widget.RecyclerView>
XML2
:implementation ‘com.android.support:cardview-v7:28.0.0’
<android.support.v7.widget.CardView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_height="45dp"
android:layout_width="match_parent"
app:cardCornerRadius="10dp"
android:layout_margin="4dp"
android:id="@+id/card">
<TextView
android:id="@+id/card_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="left|center"
android:layout_marginLeft="10dp"/>
</android.support.v7.widget.CardView>
Adapter
:
//3.添加<RVAdaper.RVHolde>
public class RVAdaper extends RecyclerView.Adapter<RVAdaper.RVHolder> {
private List<String> RVfolder_name_list;
private LayoutInflater RVinflater;
public RVAdaper(Context context,List<String> folder_name_list){
//1.准备数据源和LayoutInflater布局填充器
this.RVfolder_name_list=folder_name_list;
this.RVinflater=LayoutInflater.from(context);
}
@NonNull
@Override
public RVAdaper.RVHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
//4.给ViewHolder找到当前布局,
View view=RVinflater.inflate(R.layout.card1,viewGroup,false);
return new RVHolder(view);
}
@Override
public void onBindViewHolder(@NonNull RVHolder viewHolder, int i) {
//5.上一步的RVHolder被此方法接到,取出数据源数据,setView
viewHolder.card_text.setText(RVfolder_name_list.get(i));
}
@Override
public int getItemCount() {
//6.
return RVfolder_name_list.size();
}
//2.给控件绑定布局
public class RVHolder extends RecyclerView.ViewHolder{
private TextView card_text;
public RVHolder(View itemView) {
super(itemView);
card_text=(TextView)itemView.findViewById(R.id.card_text);
}
}
}
- Activity中使用
private RecyclerView recyclerView;
private LinearLayoutManager linearLayoutManager;
private RVAdaper rvAdaper;
private List<String> floder_list;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
floder_list=new ArrayList<String>();
floder_list.add("1");
floder_list.add("2");
recyclerView=(RecyclerView)findViewById(R.id.card_recycerview);
linearLayoutManager = new LinearLayoutManager(this);
//LayoutManager管理条目(item)的位置
linearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL);
recyclerView.setLayoutManager(linearLayoutManager);
recyclerView.setHasFixedSize(true);//如果RecyclerView的(item)数目不会改变,可以添加这句话改善性能
rvAdaper=new RVAdaper(this,floder_list);
recyclerView.setAdapter(rvAdaper);
}
- Adapter添加点击事件
添加接口
//7.
public interface RVItemClickListener {
public void onItemClick(View view,int postition);
public void OnLongItemClick(View view,int position);
}
Adapter中
public class RVAdaper extends RecyclerView.Adapter<RVAdaper.RVHolder> {
private List<String> RVfolder_name_list;
private LayoutInflater RVinflater;
private RVItemClickListener rvItemClickListener; //8.
public RVAdaper(Context context,List<String> folder_name_list){
this.RVfolder_name_list=folder_name_list;
this.RVinflater=LayoutInflater.from(context);
}
@NonNull
@Override
public RVAdaper.RVHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
View view=RVinflater.inflate(R.layout.card1,viewGroup,false);
return new RVHolder(view);
}
@Override
public void onBindViewHolder(@NonNull final RVHolder viewHolder, int i) {
viewHolder.card_text.setText(RVfolder_name_list.get(i));
//10.设置监听
if(rvItemClickListener!=null){
viewHolder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
rvItemClickListener.onItemClick(viewHolder.itemView,viewHolder.getLayoutPosition());
}
});
viewHolder.itemView.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View view) {
rvItemClickListener.OnLongItemClick(viewHolder.itemView,viewHolder.getLayoutPosition());
return false;
}
});
}
//10.设置监听
}
@Override
public int getItemCount() {
return RVfolder_name_list.size();
}
public class RVHolder extends RecyclerView.ViewHolder{
private TextView card_text;
public RVHolder(View itemView) {
super(itemView);
card_text=(TextView)itemView.findViewById(R.id.card_text);
}
}
//9.
public void setRvItemClickListener(RVItemClickListener rvItemClickListener){
this.rvItemClickListener=rvItemClickListener;
}
}
Activity中
//11.添加监听
rvAdaper=new RVAdaper(this,floder_list);
rvAdaper.setRvItemClickListener(new RVItemClickListener() {
@Override
public void onItemClick(View view, int position) {
Toast.makeText(getApplicationContext(),floder_list.get(position),Toast.LENGTH_SHORT).show();
}
@Override
public void OnLongItemClick(View view, int position) {
Toast.makeText(getApplicationContext(),floder_list.get(position),Toast.LENGTH_SHORT).show();
}
});
recyclerView.setAdapter(rvAdaper);
- CardView添加水波纹效果
XML:CardView
android:focusable="true"
android:clickable="true"
android:foreground="?android:attr/selectableItemBackground"
(附加新建不同版本资源文件的步骤)