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);
}
完成