当前位置: 首页 > 知识库问答 >
问题:

Android L中RecolyerView的挑战

贺卜霸
2023-03-14

我已经使用recyclerview玩了一段时间。是否有任何简单的方法将onclicklistener放入RecyclerView中的项目?我尝试在viewholder中实现它。onClick事件从未被触发。

并且我使用NotifyItemInserted(position)RecycerView中添加新值。UI不会自动刷新。需要上下拉来刷新。但是当我调用NotifyDataSetChanged(..)时,它就可以了。

谢谢你的建议。

这是我测试的第一个Android L组件,我正在那里堆放。

下面是我的适配器类:

public class AdapterRecyclerView extends RecyclerView.Adapter<AdapterRecyclerView.MyViewHolder> {

private List<String> arrExperiences;

//Provide a reference to the type of views that you are using - Custom ViewHolder
public class MyViewHolder extends RecyclerView.ViewHolder {

    public TextView tvExperienceTitle;
    public TextView tvExperienceDesc;

    public MyViewHolder(RelativeLayout itemView) {
        super(itemView);
        tvExperienceTitle = (TextView) itemView.findViewById(R.id.tv_experience_title);
        tvExperienceDesc = (TextView) itemView.findViewById(R.id.tv_experience_desc);
    }

}

//Provide a suitable constructor : depending on the kind of dataset.
public AdapterRecyclerView(List<String> arrExperiences){
    this.arrExperiences = arrExperiences;
}

//Create new view : invoke by a Layout Manager
@Override
public AdapterRecyclerView.MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    RelativeLayout view = (RelativeLayout) LayoutInflater.from(parent.getContext()).inflate(R.layout.view_item_recycler, parent, false);
    MyViewHolder myViewHolder = new MyViewHolder(view);
    return myViewHolder;
}

@Override
public void onBindViewHolder(AdapterRecyclerView.MyViewHolder viewHolder, int position) {
    //get element from your dataset at this position.
    //replace the content of the view with this element.
    viewHolder.tvExperienceTitle.setText(arrExperiences.get(position));
}

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

public void addExperience(String experience, int position){
    arrExperiences.add(position, experience);
    notifyItemInserted(position);
    //notifyDataSetChanged();
}

public void removeExperience(){
    int index = (int) (Math.random() * arrExperiences.size());
    arrExperiences.remove(index);
    notifyItemRemoved(index);
    //notifyDataSetChanged();
}
}

共有1个答案

曹建明
2023-03-14

只需在适配器中添加以下内容:

@Override
public void onBindViewHolder(AdapterRecyclerView.MyViewHolder viewHolder, int position) {
    yourItems.setOnClickListener(new OnClickListener() {
       @Override
       public void onClick(View v) {
          //do your stuff
       }
   });
}
 类似资料:
  • 我一直在寻找一种方法来获得一个“凸起”圆角矩形按钮,而不是完全自己使用背景和自定义视图。我想要这样的纽扣: 我以为这样就可以了: 但这没什么用。按钮看起来一样。WTF? 是的,我用的是最新的SDK等等。 编辑:所以我添加了一个translationz。现在,一个阴影在活动打开时出现,但在动画完成时消失。???

  • 我有一个带有仰角的圆角矩形,它投射了一个阴影,就像这里的示例:http://developer.android.com/preview/material/views-shadows.html#shadows 下面是我的形状: 我想获得其他所有东西都有的漂亮的“涟漪”触摸效果,但当它被设置为视图的背景时,没有触摸反馈。形状保持白色。 有办法解决这个问题吗?第一个链接的部分似乎是我想要的,但我不知道如

  • 我正在使用显示项目的名称。我的行包含单个。项名存储在中。 若要更改的内容,我将替换中的字符串,并在上调用()。 但是,如果我试图在RecyclerView滚动时更改的内容,有时它会给我 如果的大小比以前小,就会发生这种情况。那么,更改内容的正确方法是什么?这是中的bug吗? 以下是异常的完整堆栈跟踪:

  • 我最近遇到了android,它是与Android5.0一起发布的,看起来只是一个封装的传统,其中集成了ViewWholder模式,它促进了视图的重用,而不是每次都创建它。 使用还有哪些其他好处?如果两者在性能方面具有相同的效果,那么为什么会选择RecyclerView`? 编辑 我发现人们也问过类似的问题,而且答案并不是决定性的,所以在这里添加这些问题以作记录。

  • 自然语言抛出一些有趣的计算性挑战。我们已经在前面的章节探讨过许多这样的挑战,包括分词、标注、分类、信息提取和建立句法和语义表示。你现在应该已经准备好操作大型数据集,来创建语言现象的强健模型,并将它们扩展到实际语言技术的组件中。我们希望自然语言工具包(NLTK)对于开放令人振奋的实用自然语言处理的的努力到比以前更广泛的受众已经起作用。 尽管已经取得前面的所有成果,语言呈现给我们的远远不是计算上的临时

  • VM挑选 Python解释器或Python虚拟机有很多种实现,CPython是最主流的实现。CPython同时也是别的虚拟机实现的参考解释器。 PyPy是用Python实现的Python解释器,Jython是用Java实现运行在JVM上的解释器,IronPython是用Microsoft .NET CLR实现的解释器。 除非解释器的选择非常非常重要,我们一般都用CPython。 如果上面那些关于版