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) {

            }
        });



    }
}

 

完成后效果图

 

posted @ 2021-01-15 11:31  写BUG的猪  阅读(422)  评论(0)    收藏  举报