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