即使在这里,我也已经看到了很多有关此主题的材料,即列表中各个元素的列表。我的应用程序从服务器接收到两个消息列表,即传入和传出消息。当您单击这两个列表之一时,您需要切换到包含所选消息的激活。按下它时,您需要以某种方式将其拔出,然后将此ID放入查询中。我目前有一个RecyclerView
的适配器:
package com.example.developer_4.test_login.Tabs;
import android.content.Context;
import android.content.SharedPreferences;
import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import com.example.developer_4.test_login.R;
import com.example.developer_4.test_login.data.model.Message;
import java.util.List;
class MessageAdapter extends RecyclerView.Adapter<MessageAdapter.ViewHolder> {
private RecyclerView recyclerViewItemClickListener;
private List<Message> messageList;
private Context ctx;
MessageAdapter(List<Message> messageList, Context ctx) {
this.messageList = messageList;
this.ctx = ctx;
}
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
View v = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.list_of_rec_m, viewGroup, false);
return new ViewHolder(v);
}
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
Message message = messageList.get(position);
String id = String.valueOf(message.getId());
holder.subject.setText(message.getSubject());
holder.from.setText(message.getSender_name());
holder.date.setText(message.getDate());
holder.getAdapterPosition();
}
@Override
public int getItemCount() {
return messageList.size();
}
class ViewHolder extends RecyclerView.ViewHolder {
final TextView from, subject, date;
int position = 0;
ViewHolder(View v) {
super(v);
subject = v.findViewById(R.id.subject);
from = v.findViewById(R.id.from);
date = v.findViewById(R.id.date);
//id = v.findViewById(R.id.id);
v.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
}
});
}
}
}
当我点击消息元素以发送带有我手动输入的消息的ID的请求时,我在服务器的响应类中有一个getId函数,也就是说,我可以得到这个ID,但我不了解如何捕获单独的列表项。我已经看到了使用位置的方法,但是我不习惯它们。))单击此列表的某个元素后,我需要继续传递另一个消息ID的活动,通过该活动我们单击了列表,以便在其他屏幕上显示此消息。
感谢大家提供宝贵的建议,答案和批评))。预先感谢您的合作。
答案 0 :(得分:1)
您可以通过在onBindViewHolder
方法中的任何视图中添加标签来添加数据。
holder.itemView.setTag("Some Data");
然后单击该标签。
v.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String someData=(String)view.getTag();
}
});
答案 1 :(得分:1)
只需尝试设置:
holder.setTag(position);
然后
v.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
int pos = (int)view.getTag();
Message message = messageList.get(pos);
}
});