依赖
implementation 'com.android.support:recyclerview-v7:27.1.1'
MainActivity代码
调用适配器,传值
public class MainActivity extends AppCompatActivity {
private RecyclerView recycler;
private List<String> titleName;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//初始化数据
initData();
recycler = (RecyclerView) findViewById(R.id.recycler);
//设置布局
LinearLayoutManager manager = new LinearLayoutManager(this,LinearLayoutManager.VERTICAL,false);
recycler.setLayoutManager(manager);
//开启适配器
MyRecyclerAdapter myRecyclerAdapter = new MyRecyclerAdapter(titleName, MainActivity.this);
recycler.setAdapter(myRecyclerAdapter);
//监听方法
myRecyclerAdapter.setOnItemClickLisitenter(new RecycleViewLisitenter.onItemClickLisitenter() {
@Override
public void onItemClick(View v, int position) {
Toast.makeText(MainActivity.this,position+"",Toast.LENGTH_SHORT).show();
}
});
}
private void initData() {
titleName = new ArrayList<>();
for (int i = 0;i < 100 ;i++){
titleName.add("第"+i+"个");
}
}
}
MyRecyclerAdapter
这是我的适配器,在适配器里边写点击事件的构造方法,进行引用我自定义的接口
public class MyRecyclerAdapter extends RecyclerView.Adapter implements View.OnClickListener, View.OnLongClickListener {
private List<String> list;
private Context context;
public MyRecyclerAdapter(List<String> list, Context context) {
this.list = list;
this.context = context;
}
private RecycleViewLisitenter.onItemClickLisitenter onItem;
private RecycleViewLisitenter.onItemLongClickLisitenter onLongItem;
public void setOnItemClickLisitenter(RecycleViewLisitenter.onItemClickLisitenter onItem) {
this.onItem = onItem;
}
public void setOnItemLongClickLisitenter(RecycleViewLisitenter.onItemLongClickLisitenter onLongItem) {
this.onLongItem = onLongItem;
}
class MyHoder extends RecyclerView.ViewHolder {
public TextView text;
public MyHoder(View itemView) {
super(itemView);
text = itemView.findViewById(R.id.txt_title);
}
}
@NonNull
@Override
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = View.inflate(context, R.layout.item, null);
view.setOnClickListener(this);
view.setOnLongClickListener(this);
MyHoder myHoder = new MyHoder(view);
return myHoder;
}
@Override
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
MyHoder myHoder = (MyHoder) holder;
myHoder.itemView.setTag(position);
myHoder.text.setText(list.get(position));
}
@Override
public int getItemCount() {
return list.size();
}
@Override
public void onClick(View view) {
if(onItem!=null){
onItem.onItemClick(view, (Integer) view.getTag());
}
}
@Override
public boolean onLongClick(View view) {
if(onLongItem!=null){
onLongItem.onItemLongClick(view, (Integer) view.getTag());
}
return true;
}
}
RecycleViewLisitenter
自定义的接口,接口里边有抽象方法,自定义设置监听
public class RecycleViewLisitenter {
public interface onItemClickLisitenter{
void onItemClick(View v, int position);
};
public interface onItemLongClickLisitenter{
void onItemLongClick(View v,int position);
};
}
简单的接口回调就写到这里,下面是一个扩展,有兴趣可以看一下