1.首先在build.gradle文件中引入该类。
implementation 'com.android.support:recyclerview-v7:27.1.1'
2.设置布局文件
2.1Activity布局文件activity_rv.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<android.support.v7.widget.RecyclerView
android:id="@+id/recycler_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true" />
</RelativeLayout>
3.Item布局文件item_view.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:background="@color/LTGRAY"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:id="@+id/id_num"
android:layout_width="wrap_content"
android:layout_height="50dp"
android:layout_weight="1"
android:gravity="center"
android:text="1" />
<TextView
android:id="@+id/id_data"
android:layout_width="wrap_content"
android:layout_height="50dp"
android:layout_weight="1"
android:gravity="center"
android:text="1" />
</LinearLayout>
3.创建适配器
import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.util.ArrayMap;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import com.example.hzz.recyclerview.MainActivity;
import com.example.hzz.recyclerview.R;
public class ItemsAdapter extends RecyclerView.Adapter<ItemsAdapter.MyViewHolder> {
private LayoutInflater inflater;
private Context mContext;
ArrayMap<String, String> datas;
private OnItemClickLitener mOnItemClickLitener;
//创建构造参数
public ItemsAdapter(Context mContext, ArrayMap<String, String> datas) {
}
public ItemsAdapter(MainActivity mContext, android.util.ArrayMap<String, String> datas) {
this.mContext = mContext;
this.datas = datas;
inflater = LayoutInflater.from(mContext);
}
public void setOnItemClickLitener(OnItemClickLitener mOnItemClickLitener) {
this.mOnItemClickLitener = mOnItemClickLitener;
}
public interface OnItemClickLitener {
void onItemClick(View view, int position);
void onItemLongClick(View view, int position);
}
//创建ViewHolder
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = inflater.inflate(R.layout.item_view, parent, false);
MyViewHolder viewHolder = new MyViewHolder(view);
return viewHolder;
}
@Override
public void onBindViewHolder(final MyViewHolder holder, int position) {
//为textview 赋值
holder.pc_listmun.setText(String.valueOf(datas.keyAt(position)));
holder.pc_listdata.setText(String.valueOf(datas.valueAt(position)));
if (mOnItemClickLitener != null) {
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
int pos = holder.getLayoutPosition();
mOnItemClickLitener.onItemClick(holder.itemView, pos);
}
});
holder.itemView.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
int pos = holder.getLayoutPosition();
mOnItemClickLitener.onItemLongClick(holder.itemView, pos);
return false;
}
});
}
}
@Override
public int getItemCount() {
return datas.size();
}
//新增item
public void addData(String data, String num) {
datas.put(data, num);
//如果item项有1相同的数据则修改,否则插入。
if (num == "1") {
//插入
notifyItemInserted(datas.indexOfKey(data));
} else {
//增加
notifyItemChanged(datas.indexOfKey(data));
}
}
public void notifyDataSet() {
notifyDataSetChanged();
}
//移除item
public void deleateData(String data, int num) {
datas.remove(data);
//notifyItemRemoved(data);
notifyDataSetChanged();
}
class MyViewHolder extends RecyclerView.ViewHolder {
TextView pc_listdata, pc_listmun;
public MyViewHolder(View itemView) {
super(itemView);
pc_listmun = (TextView) itemView.findViewById(R.id.id_num);
pc_listdata = (TextView) itemView.findViewById(R.id.id_data);
}
}
}
4.MainActivity主要代码
import android.annotation.SuppressLint;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.DefaultItemAnimator;
import android.support.v7.widget.DividerItemDecoration;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.OrientationHelper;
import android.support.v7.widget.RecyclerView;
import android.util.ArrayMap;
import android.view.View;
import android.widget.Toast;
import com.example.hzz.recyclerview.adapter.ItemsAdapter;
public class MainActivity extends AppCompatActivity {
RecyclerView mRecyclerView;
ItemsAdapter adapter;
ArrayMap<String, String> arraymap;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
loadItems();
mRecyclerView = findViewById(R.id.recycler_view);
LinearLayoutManager layoutManager = new LinearLayoutManager(this);
//设置布局管理器
mRecyclerView.setLayoutManager(layoutManager);
//设置为垂直布局,这也是默认的
layoutManager.setOrientation(OrientationHelper.VERTICAL);
//设置分隔线
mRecyclerView.addItemDecoration(new DividerItemDecoration(this, DividerItemDecoration.VERTICAL));
//设置增加或删除条目的动画
mRecyclerView.setItemAnimator(new DefaultItemAnimator());
adapter=new ItemsAdapter(this,arraymap);
//设置Adapter
mRecyclerView.setAdapter(adapter);
//点击事件
ItemClick();
}
private void ItemClick() {
adapter.setOnItemClickLitener(new ItemsAdapter.OnItemClickLitener() {
@Override
public void onItemClick(View view, int position) {
String num = arraymap.keyAt(position);
String data = arraymap.valueAt(position);
Toast.makeText(MainActivity.this, num+"——"+data, Toast.LENGTH_SHORT).show();
}
@Override
public void onItemLongClick(View view, int position) {
}
});
}
private void loadItems() {
arraymap = new ArrayMap<>();
for (int i = 0; i < 30; i++) {
arraymap.put(String.valueOf(i), "第" + i + "个数据");
arraymap.put(String.valueOf(i), "第" + i + "个数据");
String datakey = arraymap.keyAt(i);
String datavalue = arraymap.valueAt(i);
}
}
}