1、RecyclerView仿listview(可以上下滑动,也可左右滑动)
关键代码:
//实例化
recyclerView= (RecyclerView) myView.findViewById(R.id.relistview);
/**
* RecyclerView.LayoutManager 抽象类
* LinearLayoutManager 线性布局管理器 纵向横向
*/
recyclerView.setLayoutManager(new LinearLayoutManager(context));
//使用recyclerView实现水平滚动的,下面的代码不写则默认的上下滚动listviewLinearLayoutManager linearLayoutManager=new LinearLayoutManager(context);
linearLayoutManager.setOrientation(LinearLayoutManager.HORIZONTAL);
recyclerView.setLayoutManager(linearLayoutManager);
//填充适配器
//list为数据源,getData()方法略
list=getData();
MyListViewAdapter adapter = new MyListViewAdapter(context, list);
recyclerView.setAdapter(adapter);
以下是MyListViewAdapter
/**
* 仿listview的适配器
*/
public class MyListViewAdapter extends RecyclerView.Adapter<MyListViewAdapter.MyViewHolder>{
private List<ListBean.DataBean> list;
private Context context;
//自定义的监听事件
private OnItemClickListener onItemClickListener;
public MyListViewAdapter(Context context, List<ListBean.DataBean> list) {
this.context = context;
this.list = list;
}
public void setListener(OnItemClickListener onItemClickListener){
this.onItemClickListener=onItemClickListener;
}
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
//R.layout.listview_item里面就一个textview,这里就不贴出啦
View view= LayoutInflater.from(context).inflate(R.layout.listview_item,null);
MyViewHolder viewHolder=new MyViewHolder(view);
return viewHolder;
}
@Override
public void onBindViewHolder(final MyViewHolder holder, int position) {
holder.tv_title.setText(list.get(position));
//点击事件
if (onItemClickListener!=null){
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int pos=holder.getLayoutPosition();
onItemClickListener.OnItemClickListener(v,pos);
}
});
holder.itemView.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
int pos=holder.getLayoutPosition();
onItemClickListener.OnItemLongClickListener(v,pos);
return true;
}
});
}
}
@Override
public int getItemCount() {
return list.size();
}
class MyViewHolder extends RecyclerView.ViewHolder{
TextView tv_title;
public MyViewHolder(View itemView) {
super(itemView);
tv_title = (TextView) itemView.findViewById(R.id.tv);
}
}
}
以下是监听事件的代码:
public interface OnItemClickListener {
//点击事件
void OnItemClickListener(View view,int posotion);
//长按事件
void OnItemLongClickListener(View view,int position);
}
完成