在recyclerview中单击项目时如何获取项目名称?

时间:2019-07-15 07:31:23

标签: android android-recyclerview onitemclicklistener

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

模型是一个包含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;
}

}

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

2 个答案:

答案 0 :(得分:0)

您是否在RecyclerView适配器中设置了任何数据?请首先检查一下。

答案 1 :(得分:0)

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