Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 当用户触摸屏幕上的任何位置时,如何逐个填充回收器视图?_Java_Android - Fatal编程技术网

Java 当用户触摸屏幕上的任何位置时,如何逐个填充回收器视图?

Java 当用户触摸屏幕上的任何位置时,如何逐个填充回收器视图?,java,android,Java,Android,我想在用户逐个单击屏幕上的任意位置时填充recyclerview项。例如,第一次触摸加载第一项第二次触摸加载第二项第三次触摸加载第三项等等。我不知道如何实现这一点 这是我的适配器代码 适配器 public class MessageAdapter extends RecyclerView.Adapter<MessageAdapter.ViewHolder>{ List<MessageModel> list; Context context

我想在用户逐个单击屏幕上的任意位置时填充recyclerview项。例如,第一次触摸加载第一项第二次触摸加载第二项第三次触摸加载第三项等等。我不知道如何实现这一点

这是我的适配器代码

适配器

public class MessageAdapter extends RecyclerView.Adapter<MessageAdapter.ViewHolder>{

        List<MessageModel> list;
        Context context;

        public MessageAdapter(List<MessageModel> list, Context context) {
            this.list = list;
            this.context = context;
        }

        @NonNull
        @Override
        public MessageAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
           View view = LayoutInflater.from(context)
                   .inflate(R.layout.chatbubble, viewGroup, false);
           ViewHolder myHolder = new ViewHolder(view);

            return myHolder;
        }

        @Override
        public void onBindViewHolder(@NonNull MessageAdapter.ViewHolder viewHolder, int i) {
            MessageModel model = list.get(i);
            if(model.getSender().equals("left")){
                viewHolder.left.setText(model.getText());
                viewHolder.right.setVisibility(View.GONE);
                viewHolder.middle.setVisibility(View.GONE);
            } else if(model.getSender().equals("right")){
                viewHolder.right.setText(model.getText());
                viewHolder.middle.setVisibility(View.GONE);
                viewHolder.left.setVisibility(View.GONE);
            } else {
                viewHolder.middle.setText(model.getText());
                viewHolder.left.setVisibility(View.GONE);
                viewHolder.right.setVisibility(View.GONE);
            }
        }

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

        public class ViewHolder extends RecyclerView.ViewHolder {

            TextView left, right, middle;

            public ViewHolder(@NonNull View itemView) {
                super(itemView);

                left = itemView.findViewById(R.id.message_incoming);
                right = itemView.findViewById(R.id.message_outgoing);
                middle = itemView.findViewById(R.id.message_middle);

            }
        }
    }
公共类MessageAdapter扩展了RecyclerView.Adapter{ 名单; 语境; 公共消息适配器(列表、上下文){ this.list=列表; this.context=上下文; } @非空 @凌驾 public MessageAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup ViewGroup,int i){ 视图=LayoutFlater.from(上下文) .充气(R.layout.chatbuble,viewGroup,false); ViewHolder myHolder=新的ViewHolder(视图); 归还我的持有人; } @凌驾 public void onBindViewHolder(@NonNull MessageAdapter.ViewHolder ViewHolder,int i){ MessageModel model=list.get(i); if(model.getSender().equals(“left”)){ viewHolder.left.setText(model.getText()); viewHolder.right.setVisibility(View.GONE); viewHolder.middle.setVisibility(View.GONE); }else if(model.getSender().equals(“right”)){ viewHolder.right.setText(model.getText()); viewHolder.middle.setVisibility(View.GONE); viewHolder.left.setVisibility(View.GONE); }否则{ viewHolder.middle.setText(model.getText()); viewHolder.left.setVisibility(View.GONE); viewHolder.right.setVisibility(View.GONE); } } @凌驾 public int getItemCount(){ 返回list.size(); } 公共类ViewHolder扩展了RecyclerView.ViewHolder{ 文本视图左、右、中; 公共视图持有者(@NonNull View itemView){ 超级(项目视图); 左=itemviewbyd(R.id.message\u传入); 右=itemviewbyd(R.id.message\u传出); middle=itemView.findviewbyd(R.id.message\u middle); } } }
在保存
回收视图的
活动中,执行以下代码更改

  • 添加
    onClickListener
    onTouchListener
    您喜欢的
    RecyclerView

    recyclerView.setOnClickListener()
    recyclerView.setOnTouchListener()

  • 添加代码以将项目添加到上述事件侦听器中的
    RecyclerView

    添加(“您的项目”)
    adapter.notifyItemInserted(插入项目的内部位置)

    adapter.notifyDatasetChanged()

    //由于某些原因,我无法格式化上述代码段

  • 确保在将项目添加到RecyclerView列表中后调用
    notifyItemInserted()
    notifyDatasetChanged()


  • 我正在动态地将数据添加到列表中是的,这应该不是问题。这一切都将在获取数据后发生。感谢它与
    ontouchlistener
    一起工作,几乎没有修改