java - 当用户触摸屏幕上的任意位置时,如何一一填充回收器 View ?

标签 java android

当用户点击屏幕上的任意位置时,我想填充 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);

            }
        }
    }

最佳答案

在保存 RecyclerViewActivity 中,执行以下代码更改。

  1. 添加 onClickListeneronTouchListener(无论您喜欢哪个 RecyclerView)。

    recyclerView.setOnClickListener()recyclerView.setOnTouchListener()

  2. 添加代码以将项目添加到上述事件监听器中的 RecyclerView 中。

    yourList.add("您的元素");
    适配器.notifyItemInserted(intpositionAtWhichItemWasInserted);

    适配器.notifyDatasetChanged();

    //由于某种原因,我无法格式化上面的代码 fragment 。

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

关于java - 当用户触摸屏幕上的任意位置时,如何一一填充回收器 View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56445734/

相关文章:

java - "Uncaught TypeError: window.getDeviceDetails is not a function"RazorPay 与 android 的集成

java - 如何在 Android 中处理长按

android - Flutter:如何禁用 GridView 小部件的滚动,但为整个页面启用滚动?

java - 在 Android 中使用 Java 的 Apk 文件下载错误

java - 从 Java 中的扩展类 B 将字符串添加到抽象类 A 中的数组

java - hql查询形成

java - args4J 不适用于 gradle

java - 无法绘制透明组件背景

android - 是什么导致了 flutter 项目中的 "cannot resolve symbol GradleException"?

java - 在java程序中引入延迟