引入recyclerview
compile 'com.android.support:recyclerview-v7:23.4.0'
打印使用
compile 'com.orhanobut:logger:2.1.1'
MyAdapter通用适配器
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> implements View.OnClickListener {
public void setClickCallBack(ItemClickCallBack clickCallBack) {
this.clickCallBack = clickCallBack;
}
@Override
public void onClick(View view) {
if (clickCallBack != null) {
clickCallBack.onItemClick((int) view.getTag());
}
}
public interface ItemClickCallBack {
void onItemClick(int pos);
}
public ArrayList<String> datas = null;
private ItemClickCallBack clickCallBack;
public MyAdapter(ArrayList<String> datas) {
this.datas = datas;
}
//创建新View,被LayoutManager所调用
@Override
public ViewHolder onCreateViewHolder(ViewGroup viewGroup, int viewType) {
View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.item, viewGroup, false);
view.setOnClickListener(this);
return new ViewHolder(view);
}
//将数据与界面进行绑定的操作
@Override
public void onBindViewHolder(ViewHolder viewHolder, int position) {
viewHolder.mTextView.setText(datas.get(position));
viewHolder.itemView.setTag(position);
}
//获取数据的数量
@Override
public int getItemCount() {
return datas.size();
}
//自定义的ViewHolder,持有每个Item的的所有界面元素
public static class ViewHolder extends RecyclerView.ViewHolder {
public TextView mTextView;
public ViewHolder(View view) {
super(view);
mTextView = (TextView) view.findViewById(R.id.text);
}
}
}
item.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="100dip"
android:paddingLeft="10dip">
<View
android:layout_width="60dip"
android:layout_height="60dip"
android:layout_gravity="center"
android:background="#999999" />
<TextView
android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginLeft="10dip" />
</LinearLayout>
使用
List<String>listData = new ArrayList<>();
MyAdapter mAdapter = new MyAdapter(listData);
mAdapter.setClickCallBack(this);
mRecyclerView.setAdapter(mAdapter);
实现adapter中的接口
实现adapter中的方法
@Override
public void onItemClick(int pos) {
Logger.d(pos);
}