赞
踩
1、依赖:implementation ‘com.android.support:recyclerview-v7:28.0.0-rc01’,后面的版本号,与implementation 'com.android.support:appcompat-v7:28.0.0-rc01’的版本号保持一致,
2、Adapter:
package com.fpt.myrecycletest; import android.content.Context; import android.support.annotation.NonNull; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; import java.util.List; public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> { private List<String> list; private Context context; private OnItemClickListener onItemClickListener;//外部接口调用 public MyAdapter(List<String> list, Context context){ this.list=list; this.context=context; } @NonNull @Override public MyAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) { // 这里的i最好不为final, View view= LayoutInflater.from(context).inflate(R.layout.list_item,viewGroup,false); MyAdapter.ViewHolder viewHolder=new MyAdapter.ViewHolder(view); return viewHolder; } @Override public void onBindViewHolder(@NonNull MyAdapter.ViewHolder viewHolder, int i) { //这里的i可以为final,但是上面的方法中,最好不要设置为final,要不然点击的时候,不同item点击的时候,i一直未某一个参数 //这里可以进行监听事件的接口接入 viewHolder.mText.setText(list.get(i)); viewHolder.mTextsetTag(i);//将各个text进行标记 } @Override public int getItemCount() { return list.size(); } class ViewHolder extends RecyclerView.ViewHolder { TextView mText; ViewHolder(View itemView) { super(itemView); mText = itemView.findViewById(R.id.mian_tv); //设置点击事件应该在这里进行初始化 mtext.setOnClickListener(MyAdapter.this); } } @Override public void onClick(View v) { int position= (int) v.getTag(); if (onItemClickListener != null) { onItemClickListener.OnItemClick(v, position); } } public void setLayoutOnlickListener(OnItemClickListener onlickListener){ onItemClickListener=onlickListener; } }
3、main中:
recyclerView=findViewById(R.id.recycle);
list=new ArrayList<>();
// recyclerView.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false));
recyclerView.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false));//设置横向
recyclerView.setLayoutManager(new GridLayoutManager(this, 2));//设置3排;
// recyclerView.setLayoutManager(new StaggeredGridLayoutManager(3, StaggeredGridLayoutManager.VERTICAL));//设置瀑布流:
recyclerView.setItemAnimator(new DefaultItemAnimator());
for (int i=0;i<80;i++){
list.add("冯绍峰"+i);
}
MyAdapter adapter=new MyAdapter(list,getBaseContext());
recyclerView.setAdapter(adapter);
4、在第一次了解调试recycle时,需要注意的是:在main.xml中,
<android.support.v7.widget.RecyclerView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/recycle">
</android.support.v7.widget.RecyclerView>
height的高度最好为wrap_content,要不然,一item占满了整个屏幕,看似只有一个item,其实已经成功了,但你还在那捣鼓半天,还不知道自己已经成功了。
详细的可以参照这位大神的博客:https://blog.csdn.net/tuike/article/details/79064750
public class WchatDetailMainAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> { private static final int File_type = 0; private static final int Advertise_type = 1; private static final int Simple_type = 2; private List<WchatDetailInfo> list; private Context context; private int type=0;//0表示微信跳转,1表示qq跳转 public WchatDetailMainAdapter(Context context, List<WchatDetailInfo> list,int type) { this.list = list; this.context = context; this.type=type; } @NonNull @Override public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { RecyclerView.ViewHolder holer = null; if (viewType == File_type) { View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_recycle_wchat_detail_main_file_type, parent, false); holer = new FileViewHolder(view); } else if (viewType == Advertise_type) { View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_recycle_wchat_detail_main_advertise_type, parent, false); holer = new AdvertiseViewHolder(view); } else { View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_recycle_wchat_detail_main_simple_type, parent, false); holer = new SimpleViewHolder(view); } return holer; } /** * 不同item管理 * */ @Override public int getItemViewType(int position) { if (position == 0) { return File_type; } else if (position == 1) { return Advertise_type; } return Simple_type; } @Override public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) { if (holder instanceof FileViewHolder) { FileViewHolder fileViewHolder = (FileViewHolder) holder; fileViewHolder.tv_size.setText(list.get(position).getSizeString()); fileViewHolder.btn_do.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { if ("0B".equals(list.get(position).getSizeString())) { ToastUtils.INSTANCE.showCustomToast("暂无文件", context); return; } if (type==0){ JumpUtils.INSTANCE.fileDetailJump("其他文件", 7); }else if (type==1){ JumpUtils.INSTANCE.fileDetailJump("其他文件", 16); } } }); return; } if (holder instanceof AdvertiseViewHolder) { AdvertiseViewHolder advertiseViewHolder = (AdvertiseViewHolder) holder; return; } if (holder instanceof SimpleViewHolder) { SimpleViewHolder simpleViewHolder = (SimpleViewHolder) holder; simpleViewHolder.tv_simple_hint.setText(list.get(position).getHint()); simpleViewHolder.tv_simple_size.setText(list.get(position).getSizeString()); simpleViewHolder.tv_simple_type.setText(list.get(position).getType()); simpleViewHolder.simple_btn_do.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { if (type==0){ switch (position) { case 2: // 图片 if ("0B".equals(list.get(position).getSizeString())) { ToastUtils.INSTANCE.showCustomToast("暂无文件", context); return; } Log.d("----", "onClick图片: "); JumpUtils.INSTANCE.fileDetailJump("图片", 8); break; case 3: // 视频 if ("0B".equals(list.get(position).getSizeString())) { ToastUtils.INSTANCE.showCustomToast("暂无文件", context); return; } JumpUtils.INSTANCE.fileDetailJump("视频", 9); break; case 4: // 文档 if ("0B".equals(list.get(position).getSizeString())) { ToastUtils.INSTANCE.showCustomToast("暂无文件", context); return; } Log.d("----", "onClick文档: "); JumpUtils.INSTANCE.fileDetailJump("文档", 10); break; case 5: // 音频 if ("0B".equals(list.get(position).getSizeString())) { ToastUtils.INSTANCE.showCustomToast("暂无文件", context); return; } JumpUtils.INSTANCE.fileDetailJump("音频", 11); break; } }else if (type==1){ // qq跳转 switch (position) { case 2: // 图片 if ("0B".equals(list.get(position).getSizeString())) { ToastUtils.INSTANCE.showCustomToast("暂无文件", context); return; } Log.d("----", "onClick图片: "); JumpUtils.INSTANCE.fileDetailJump("图片", 12); break; case 3: // 视频 if ("0B".equals(list.get(position).getSizeString())) { ToastUtils.INSTANCE.showCustomToast("暂无文件", context); return; } JumpUtils.INSTANCE.fileDetailJump("视频", 13); break; case 4: // 文档 if ("0B".equals(list.get(position).getSizeString())) { ToastUtils.INSTANCE.showCustomToast("暂无文件", context); return; } Log.d("----", "onClick文档: "); JumpUtils.INSTANCE.fileDetailJump("文档", 14); break; case 5: // 音频 if ("0B".equals(list.get(position).getSizeString())) { ToastUtils.INSTANCE.showCustomToast("暂无文件", context); return; } JumpUtils.INSTANCE.fileDetailJump("音频", 15); break; } } } }); FragmentHomeFileAdapter adapter = new FragmentHomeFileAdapter(new OnRecycleItemClickListener<FileInfo>() { @Override public void onItemClick(@NotNull View view, int position, FileInfo data) { } }); List<FileInfo> listInfo = new ArrayList<>(); if (list.get(position).getList().size()>4){ for (int i = 0; i < 4; i++) { listInfo.add(list.get(position).getList().get(i)); } }else { for (int i=0;i<list.get(position).getList().size();i++){ listInfo.add(list.get(position).getList().get(i)); } } adapter.setTotalNumber(list.get(position).getList().size()); simpleViewHolder.recyclerView.setLayoutManager(new GridLayoutManager(context, 4)); simpleViewHolder.recyclerView.setAdapter(adapter); simpleViewHolder.recyclerView.setNestedScrollingEnabled(false); adapter.appendToList(listInfo); adapter.notifyDataSetChanged(); return; } } @Override public int getItemCount() { return list.size(); } public class FileViewHolder extends RecyclerView.ViewHolder { TextView tv_size; TextView btn_do; public FileViewHolder(@NonNull View itemView) { super(itemView); tv_size = itemView.findViewById(R.id.item_wchat_detail_file_tv_size); btn_do = itemView.findViewById(R.id.item_wchat_detail_file_btn); } } public class AdvertiseViewHolder extends RecyclerView.ViewHolder { public AdvertiseViewHolder(@NonNull View itemView) { super(itemView); } } public class SimpleViewHolder extends RecyclerView.ViewHolder { TextView tv_simple_size, tv_simple_type, tv_simple_hint; TextView simple_btn_do; RecyclerView recyclerView; public SimpleViewHolder(@NonNull View itemView) { super(itemView); tv_simple_hint = itemView.findViewById(R.id.item_wchat_main_simple_tv_hint); tv_simple_type = itemView.findViewById(R.id.item_wchat_main_simple_tv_type); tv_simple_size = itemView.findViewById(R.id.item_wchat_main_simple_tv_size); simple_btn_do = itemView.findViewById(R.id.item_wchat_main_simple_btn); recyclerView = itemView.findViewById(R.id.item_wchat_main_simple_recycle); } } }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。