【问题标题】:How to get item name when an item is clicked in recyclerview?在recyclerview中单击项目时如何获取项目名称?
【发布时间】:2019-11-23 21:10:23
【问题描述】:

我正在使用库来获取 recyclerView 的单击项目,项目单击工作正常,但是当我尝试获取数据时,即 models.get(position).getName();它返回一个空值。

Model 是一个包含 getter 和 setter 方法的 ArrayList 类。

 RecycleClick.addTo(mRecyclerView).setOnItemClickListener(new RecycleClick.OnItemClickListener() 
{
                @Override
                public void onItemClicked(RecyclerView recyclerView, int 
         position, View v) 
{

   try 
{

    String category=models.get(position).getCategory();

   Toast.makeText(v.getContext(),category,Toast.LENGTH_SHORT).show();

                    }
    catch (Exception e)
                    {
                        Toast.makeText(HomeActivity.this,"exception "+e.getMessage(),Toast.LENGTH_SHORT).show();

                    }
                }
            });

适配器类:

公共类 MyAdapter 扩展 RecyclerView.Adapter {

Context c;
ArrayList<ModelHome> models;
public MyAdapter(Context c, ArrayList<ModelHome> models) {
    this.c = c;
    this.models = models;
}

@NonNull
@Override
public MyHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i)
{
    View v= LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.home_screen_row,null);
    return new MyHolder(v);
}

@Override
public void onBindViewHolder(@NonNull final MyHolder myHolder, int i)
{

    myHolder.category.setText(models.get(i).category);
    try
    {
        Picasso.get().load(models.get(i).image).into(myHolder.Image);
    }
    catch (Exception e)
    {
        Picasso.get().load(R.drawable.loading).into(myHolder.Image);

    }

}

@Override
public int getItemCount() {
    return models.size();
}

}

持有人类别:

公共类 MyHolder 扩展 RecyclerView.ViewHolder{

TextView category;
ImageView Image;
RelativeLayout relativeLayout;

public MyHolder(@NonNull View itemView) {
    super(itemView);
    this.category=itemView.findViewById(R.id.image_title_home);
    this.Image=itemView.findViewById(R.id.firebaseImage_home);
     }

}

模型类:

公共类 ModelHome { 字符串类别,图片;

public ModelHome(String category, String image) {
    this.category = category;
    this.image = image;
}

public ModelHome() {
}

public String getCategory() {
    return category;
}

public void setCategory(String category) {
    this.category = category;
}

public String getImage() {
    return image;
}

public void setImage(String image) {
    this.image = image;
}

}

当我单击一个项目并尝试获取相应的文本时,例如: 字符串类别=models.get(position).getCategory(); 它返回空值。 我正在使用 try{} catch 块

【问题讨论】:

  • 我认为您的 ArrayList 是空的,并且该位置没有数据,所以这就是它返回 null 的原因
  • 请发布您的适配器类和活动类
  • 那里究竟是什么?你有什么异常吗?
  • 发布适配器类,以便我们可以帮助您和模型类。
  • 问题已更新,请检查适配器和支架类。

标签: android android-recyclerview onitemclicklistener


【解决方案1】:

你是否在 RecyclerView Adapter 中设置了任何数据?请首先检查。

【讨论】:

  • 我正在从 firebase 获取数据并插入模型类 (ArrayList)
  • 您必须在Adapter类中添加点击监听,如果您想从Adapter获取数据,您必须使用回调。
【解决方案2】:

我通过消除本地 ArrayList 对象来解决它, 全局使用 ModelHome 对象,问题将得到解决。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-27
    • 2020-04-05
    • 1970-01-01
    相关资源
    最近更新 更多