java - Java - Recycleview ViewHolder OnClick 不工作也 viewholder.category_name.settext 不工作
问题描述
我已经尝试了下面的代码,但 viewHolder.category_name.setText() 也不起作用 viewHolder.setItemclickListener 也不起作用
类别片段代码
package com.kunal.quiz;
import android.content.Intent;
import android.os.Bundle;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.firebase.ui.database.FirebaseRecyclerAdapter;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.kunal.quiz.Common.Common;
import com.kunal.quiz.Interface.ItemClickListener;
import com.kunal.quiz.ViewHolder.CategoryViewHolder;
import com.shashank.sony.fancytoastlib.FancyToast;
import com.squareup.picasso.Picasso;
/**
* A simple {@link Fragment} subclass.
*/
public class CategoryFragment extends Fragment {
View myFragment;
RecyclerView listCategory;
RecyclerView.LayoutManager layoutManager;
FirebaseRecyclerAdapter<Category, CategoryViewHolder> adapter;
FirebaseDatabase database;
DatabaseReference categories;
public static CategoryFragment newInstance() {
CategoryFragment categoryFragment = new CategoryFragment();
return categoryFragment;
}
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
database = FirebaseDatabase.getInstance();
categories = database.getReference("Category");
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
myFragment = inflater.inflate(R.layout.fragment_category, container, false);
listCategory = myFragment.findViewById(R.id.list_category);
listCategory.setHasFixedSize(true);
layoutManager = new LinearLayoutManager(container.getContext());
listCategory.setLayoutManager(layoutManager);
loadCategories();
return myFragment;
}
private void loadCategories() {
adapter = new FirebaseRecyclerAdapter<Category, CategoryViewHolder>(
Category.class,
R.layout.category_layout,
CategoryViewHolder.class,
categories
) {
@Override
protected void populateViewHolder(CategoryViewHolder viewHolder,Category model, int position) {
viewHolder.category_name.setText(model.getName());
Picasso.with(getActivity())
.load(model.getImage())
.into(viewHolder.category_image);
viewHolder.setItemClickListener(new ItemClickListener() {
@Override
public void onClick(View view, int position, boolean isLongClick) {
// FancyToast.makeText(getActivity(),String.format("%d|%s",adapter.getRef(position).getKey(),model.getName()),FancyToast.LENGTH_LONG,FancyToast.SUCCESS,true).show();
Intent startGame = new Intent(getActivity(),Start.class);
Common.categoryId = adapter.getRef(position).getKey();
startActivity(startGame);
FancyToast.makeText(getActivity(),model.getName(),FancyToast.LENGTH_LONG,FancyToast.INFO,true).show();
}
});
}
};
adapter.notifyDataSetChanged();
listCategory.setAdapter(adapter);
}
}
这是类别型号代码
package com.kunal.quiz;
public class Category {
private String Name ;
private String Image;
public Category() {
}
public Category(String name, String image) {
Name = name;
Image = image;
}
public String getName() {
return Name;
}
public void setName(String name) {
Name = name;
}
public String getImage() {
return Image;
}
public void setImage(String image) {
Image = image;
}
}
我已经添加了分类片段的代码,请看。完整的活动代码已上传,其中 model.getName() 不工作也被提及
解决方案
用这个
public class Category {
private String Name ;
private String Image;
public Category() { }
public Category(String name, String image) {
this.Name = name;
this.Image = image;
}
public String getName() { return Name; }
public void setName(String name) {
this.Name = name;
}
public String getImage() { return Image;
}
public void setImage(String image){
this.Image = image;
}
}
推荐阅读
- sql - 如何根据 SQL Server 中的另一列将一列值转换为两个不同的列值?
- c# - C#/DataTable/DataGrid/SQL - 如何从 DataGridView 将参数插入存储过程
- mysql - Mysql View 比 sql server 慢
- css - CSS 将高度设置为兄弟高度的 50%
- java - 如何在不同的图像视图中设置不同的裁剪图像
- python - 匹配目录中的部分名称
- javascript - 在 angular 中出现打字稿错误,无法正确绑定
- c# - 使用类字段作为参数时抛出 ArgumentOutOfRangeException 时出现 CA2208
- php - all() 函数 Laravel 中的每个都没有数据
- azure - 发生 AZURE SQL 插入时如何触发逻辑应用