RecycleView 点击事件监听
1、定义RecycleView 监听接口类
1 package com.example.*****; 2 3 import android.view.View; 4 5 public interface OnRecycleViewClickListener { 6 void onItemClickListener (View view); 7 8 void onItemLongClickListener(View view); 9 }
3、布局中加个RecycleView,宽高位置等等不用管它
1 <?xml version="1.0" encoding="utf-8"?> 2 <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 xmlns:app="http://schemas.android.com/apk/res-auto" 4 xmlns:tools="http://schemas.android.com/tools" 5 android:layout_width="match_parent" 6 android:layout_height="match_parent" 7 tools:context=".MainActivity"> 8 <androidx.recyclerview.widget.RecyclerView 9 android:id="@+id/mainTitle" 10 android:layout_width="0dp" 11 android:layout_height="0dp" 12 app:layout_constraintBottom_toBottomOf="parent" 13 app:layout_constraintEnd_toEndOf="parent" 14 app:layout_constraintStart_toStartOf="parent" 15 app:layout_constraintTop_toTopOf="parent" 16 /> 17 </androidx.constraintlayout.widget.ConstraintLayout>
4、新建个Layout XML FIle,分割线可直接定义个View来解决;
1 <RelativeLayout 2 xmlns:android="http://schemas.android.com/apk/res/android" 3 xmlns:app="http://schemas.android.com/apk/res-auto" 4 android:layout_height="80sp" 5 android:layout_width="match_parent" 6 android:orientation="vertical" 7 android:layout_centerHorizontal="true" 8 android:layout_margin="10dp"> 9 10 <TextView 11 android:id="@+id/mainTitle" 12 android:layout_width="wrap_content" 13 android:layout_height="wrap_content" 14 android:layout_alignParentEnd="true" 15 android:layout_centerInParent="true" 16 android:layout_marginEnd="182dp" 17 android:gravity="center" 18 android:text="text" 19 android:textAlignment="center" 20 android:textSize="24sp" 21 android:textStyle="bold" /> 22 23 <View 24 android:layout_width="match_parent" 25 android:layout_height="1dp" 26 android:background="#FFD1D0D0" 27 android:layout_below="@id/mainTitle" 28 android:layout_marginTop="10sp" 29 android:layout_marginRight="5sp" 30 android:layout_marginLeft="5sp"/> 31 32 <ImageView 33 android:id="@+id/imageView" 34 android:layout_width="wrap_content" 35 android:layout_height="wrap_content" 36 android:layout_alignParentTop="true" 37 android:layout_alignParentEnd="true" 38 android:layout_centerVertical="true" 39 android:layout_marginTop="13dp" 40 android:layout_marginEnd="6dp" 41 app:srcCompat="@android:drawable/ic_media_play" /> 42 43 44 </RelativeLayout>

设置后如上图
5、重写Adapter
1 package com.example.mycalculator20; 2 3 import android.content.Context; 4 import android.view.LayoutInflater; 5 import android.view.View; 6 import android.view.ViewGroup; 7 import android.widget.TextView; 8 9 import androidx.annotation.NonNull; 10 import androidx.recyclerview.widget.RecyclerView; 11 12 import java.util.List; 13 14 public class TitleRecyclerAdapter extends RecyclerView.Adapter<TitleRecyclerAdapter.TitleViewHolder> { 15 private Context context; 16 private List<String> list; 17 private View inflater; 18 private OnRecycleViewClickListener listener; 19 20 //创建方法 setItemClickListener(); 21 public void setItemClickListener (OnRecycleViewClickListener itemClickListener){ 22 listener = itemClickListener; 23 } 24 25 class TitleViewHolder extends RecyclerView.ViewHolder{ 26 TextView textView; 27 28 public TitleViewHolder(@NonNull View itemView) { 29 super(itemView); 30 textView=itemView.findViewById(R.id.mainTitle); 31 } 32 } 33 34 //构造方法 传入数据 35 public TitleRecyclerAdapter(Context context, List<String> list){ 36 this.context = context; 37 this.list = list; 38 } 39 40 41 @NonNull 42 @Override 43 public TitleRecyclerAdapter.TitleViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { 44 //创建viewHolder,返回每一项布局; 45 inflater = LayoutInflater.from(context).inflate(R.layout.sample_main__title_recycle_view,parent,false); 46 TitleViewHolder titleViewHolder = new TitleViewHolder(inflater); 47 48 //接口回调 49 if(listener != null){ 50 inflater.setOnClickListener(new View.OnClickListener() { 51 @Override 52 public void onClick(View v) { 53 listener.onItemClickListener(v); 54 } 55 }); 56 57 } 58 59 return titleViewHolder; 60 } 61 62 @Override 63 public void onBindViewHolder(@NonNull TitleRecyclerAdapter.TitleViewHolder holder, int position) { 64 //将数据和控件绑定 65 holder.textView.setText(list.get(position)); 66 67 } 68 69 @Override 70 public int getItemCount() { 71 return list.size(); 72 } 73 }
6、MainActivity.class
package com.example.mycalculator20; import androidx.appcompat.app.AppCompatActivity; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; import androidx.recyclerview.widget.StaggeredGridLayoutManager; import android.content.Intent; import android.os.Bundle; import android.view.View; import java.util.ArrayList; import java.util.Arrays; import java.util.List; public class MainActivity extends AppCompatActivity { private RecyclerView mainTitle; final String[] Titls ={"通过管径计算流速","通过流速计算管径"}; private List<String> list; private TitleRecyclerAdapter titleAdapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mainTitle = findViewById(R.id.mainTitle); list = Arrays.asList(Titls); titleAdapter = new TitleRecyclerAdapter(MainActivity.this,list); LinearLayoutManager manager = new LinearLayoutManager(this); StaggeredGridLayoutManager stagger = new StaggeredGridLayoutManager(1, StaggeredGridLayoutManager.VERTICAL); mainTitle.setLayoutManager(stagger); mainTitle.setAdapter(titleAdapter); //Item点击监听 titleAdapter.setItemClickListener(new OnRecycleViewClickListener() { @Override public void onItemClickListener(View view) { int position = mainTitle.getChildAdapterPosition(view); switch (position){ case 0: startActivity(new Intent(MainActivity.this,DNtoV.class)); break; case 1: startActivity(new Intent(MainActivity.this,VTODN.class)); break; } } @Override public void onItemLongClickListener(View view) { } }); } }
完成后效果图


浙公网安备 33010602011771号