Firebase UI Recyclerview OnClick不起作用,尝试了所有操作。这不是重复的问题,请]] <<

问题描述 投票:0回答:1
我正在尝试在Android应用中添加Firebase Recyclerview。当我添加时,所有数据都可以从Firestore中正常获取,但是在处理onClick事件时,它根本不起作用。

我关注的事情:

    添加了带有方法的接口。

  • 我的T​​ipsActivity.java中的实现接口
  • 这里是代码:

    TipsActivity.java

    import androidx.appcompat.app.AppCompatActivity; import androidx.paging.PagedList; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; import android.os.Bundle; import android.widget.Toast; import android.util.Log; import com.firebase.ui.firestore.paging.FirestorePagingOptions; import com.google.firebase.firestore.FirebaseFirestore; import com.google.firebase.firestore.Query; public class TipsActivity extends AppCompatActivity implements FirestoreTipsAdapter.OnListItemClick { FirestoreTipsAdapter firestoreTipsAdapter; FirebaseFirestore firebaseFirestore; RecyclerView recyclerView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_tips); firebaseFirestore = FirebaseFirestore.getInstance(); recyclerView = findViewById(R.id.list); Query query = firebaseFirestore.collection("DailyTips").document("MyTips").collection("Tips"); PagedList.Config config = new PagedList.Config.Builder() .setInitialLoadSizeHint(10) .setPageSize(5) .build(); FirestorePagingOptions<TipsModel> firestorePagingOptions = new FirestorePagingOptions.Builder<TipsModel>() .setLifecycleOwner(this) .setQuery(query,config,TipsModel.class) .build(); firestoreTipsAdapter = new FirestoreTipsAdapter(firestorePagingOptions,this,this); recyclerView.setHasFixedSize(true); recyclerView.setLayoutManager(new LinearLayoutManager(this)); recyclerView.setAdapter(firestoreTipsAdapter); } @Override public void onItemClick() { Toast.makeText(this, "Show up bruh!", Toast.LENGTH_SHORT).show(); Log.d("AT_LEAST","You should work"); } }

    这是我的:

    FirestoreTipsAdapter.java

    package com.mycompany.company; import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; import android.widget.Toast; import androidx.annotation.NonNull; import androidx.recyclerview.widget.RecyclerView; import com.firebase.ui.firestore.paging.FirestorePagingAdapter; import com.firebase.ui.firestore.paging.FirestorePagingOptions; public class FirestoreTipsAdapter extends FirestorePagingAdapter<TipsModel, FirestoreTipsAdapter.TipsViewHolder> { private OnListItemClick onListItemClick; Context context; public FirestoreTipsAdapter(@NonNull FirestorePagingOptions<TipsModel> options,OnListItemClick onListItemClick,Context context) { super(options); this.onListItemClick = onListItemClick; this.context = context; } @Override protected void onBindViewHolder(@NonNull TipsViewHolder holder, int position, @NonNull TipsModel model) { holder.title.setText(model.getTitle()); holder.description.setText(model.getDescription()); } @NonNull @Override public TipsViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.list_item,parent,false); return new TipsViewHolder(view); } public class TipsViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener { TextView title,description; public TipsViewHolder(@NonNull View itemView) { super(itemView); title = itemView.findViewById(R.id.list_title); description = itemView.findViewById(R.id.list_desc); itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(context, "Are you working bro?", Toast.LENGTH_SHORT).show(); } }); } @Override public void onClick(View v) { onListItemClick.onItemClick(); } } public interface OnListItemClick{ void onItemClick(); } }

    这是list_item.xml的代码

    <?xml version="1.0" encoding="utf-8"?> <androidx.cardview.widget.CardView android:layout_width="match_parent" android:layout_height="wrap_content" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_margin="10dp" android:id="@+id/tipCardView" app:cardElevation="5dp" app:cardBackgroundColor="#E2E0EE" app:cardCornerRadius="5dp" xmlns:android="http://schemas.android.com/apk/res/android"> <LinearLayout android:id="@+id/list_root" android:layout_width="match_parent" android:layout_height="wrap_content" android:clickable="true" android:focusable="true" android:orientation="vertical" android:background="?attr/selectableItemBackground" android:padding="16dp"> <TextView android:id="@+id/list_title" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Title" android:textColor="@android:color/black" android:textSize="16sp" android:textStyle="bold" /> <TextView android:id="@+id/list_desc" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="4dp" android:text="Description" /> </LinearLayout> <ImageView android:layout_width="100dp" android:layout_height="100dp" android:src="@drawable/curveshape" android:layout_gravity="end|bottom" android:layout_marginBottom="-30dp" android:alpha="0.2" /> <ImageView android:layout_width="50dp" android:layout_height="50dp" android:src="@drawable/tips" android:layout_gravity="end|bottom" android:layout_marginBottom="-10dp" android:layout_marginRight="25dp" android:alpha="0.2" /> </androidx.cardview.widget.CardView>

    注意:我能够从Firestore提取数据,它可以正确显示数据。

    enter image description here请帮忙。我遵循了堆栈溢出的所有其他答案。 我正在尝试在Android应用中添加Firebase Recyclerview。当我添加时,所有数据都可以从Firestore中正常获取,但是在处理onClick事件时,它根本无法工作。 ...
  • android firebase android-recyclerview google-cloud-firestore firebaseui
    1个回答
    0
    投票
    在给定的设置中,OnClickListener被设置在ViewHolderitemView上,它将作为其布局中的根View,即CardView。但是,在clickable上设置的focusableLinearLayout属性会导致它首先获取触摸事件,因此它基本上是在CardView处理它们以响应单击之前拦截它们。但是,LinearLayout上没有侦听器,因此没有任何反应。
    © www.soinside.com 2019 - 2024. All rights reserved.