[英]load different chat model for different item in recycleView
I attach this chat model to activity of "On Item click chat model 我将此聊天模型附加到“按项目点击聊天模型 ”的活动中
when I click on some cardView it opens the same chat model for all card views how I can make different chat data "messages" to each view in recycleView ? 当我单击某个cardView时,它将为所有card视图打开相同的聊天模型,如何在recycleView中为每个视图创建不同的聊天数据“消息”?
the Activity of each click listener in recycle view 回收视图中每个点击侦听器的活动
if(FirebaseAuth.getInstance().getCurrentUser() == null) {
// Start sign in/sign up activity
startActivityForResult(
AuthUI.getInstance()
.createSignInIntentBuilder()
.build(),
SIGN_IN_REQUEST_CODE
);
} else {
// User is already signed in. Therefore, display
// a welcome Toast
Toast.makeText(this,
"Welcome " + FirebaseAuth.getInstance()
.getCurrentUser()
.getDisplayName(),
Toast.LENGTH_LONG)
.show();
// Load chat room contents
displayChatMessages();
}
FloatingActionButton fab =
(FloatingActionButton)findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
EditText input = (EditText)findViewById(R.id.input);
// Read the input field and push a new instance
// of ChatMessage to the Firebase database
FirebaseDatabase.getInstance()
.getReference()
.push()
.setValue(new ChatMessage1(input.getText().toString(),
FirebaseAuth.getInstance()
.getCurrentUser()
.getDisplayName())
);
// Clear the input
input.setText("");
}
});
displayChatMessages();}
private void displayChatMessages() {
ListView listOfMessages = (ListView)findViewById(R.id.list_of_messages);
adapter = new FirebaseListAdapter<ChatMessage1>(this, ChatMessage1.class,
R.layout.messagee, FirebaseDatabase.getInstance().getReference()) {
@Override
protected void populateView(View v, ChatMessage1 model, int position) {
// Get references to the views of message.xml
TextView messageText = (TextView)v.findViewById(R.id.message_text);
TextView messageUser = (TextView)v.findViewById(R.id.message_user);
TextView messageTime = (TextView)v.findViewById(R.id.message_time);
// Set their text
messageText.setText(model.getMessageText());
messageUser.setText(model.getMessageUser());
// Format the date before showing it
messageTime.setText(DateFormat.format("dd-MM-yyyy (HH:mm:ss)",
model.getMessageTime()));
}
};
listOfMessages.setAdapter(adapter);
}
OnClick method OnClick方法
@Override
public void onClick(View v) {
int position=getAdapterPosition();
PushBotsModel push = pushBotsModels.get(position);
Log.i(TAG, "User received notification with Message: " + push);
Intent intent = new Intent(this.ctx, NotificationDetails.class);
intent.putExtra("itemName",push.getMessage());
intent.putExtra("authorr",push.getauthor());
this.ctx.startActivity(intent);
}
}
chat model 聊天模型
public class ChatMessage1 {
private String messageText;
private String messageUser;
private long messageTime;
public ChatMessage1(String messageText, String messageUser) {
this.messageText = messageText;
this.messageUser = messageUser;
// Initialize to current time
messageTime = new Date().getTime();
}
public ChatMessage1(){
}
public String getMessageText() {
return messageText;
}
public void setMessageText(String messageText) {
this.messageText = messageText;
}
public String getMessageUser() {
return messageUser;
}
public void setMessageUser(String messageUser) {
this.messageUser = messageUser;
}
public long getMessageTime() {
return messageTime;
}
public void setMessageTime(long messageTime) {
this.messageTime = messageTime;
}
} }
You may want to specify an adapter and a layout manager if you want to use the RecyclerView widget as discussed in Creating Lists and Cards . 如果要使用“ 创建列表和卡片”中讨论的RecyclerView小部件,则可能需要指定适配器和布局管理器。
Also, as shown in this example, 另外,如本例所示,
public class MyActivity extends Activity {
private RecyclerView mRecyclerView;
private RecyclerView.Adapter mAdapter;
private RecyclerView.LayoutManager mLayoutManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.my_activity);
mRecyclerView = (RecyclerView) findViewById(R.id.my_recycler_view);
// use this setting to improve performance if you know that changes
// in content do not change the layout size of the RecyclerView
mRecyclerView.setHasFixedSize(true);
// use a linear layout manager
mLayoutManager = new LinearLayoutManager(this);
mRecyclerView.setLayoutManager(mLayoutManager);
// specify an adapter (see also next example)
mAdapter = new MyAdapter(myDataset);
mRecyclerView.setAdapter(mAdapter);
}
...
}
RecyclerView
widget was first added to the layout, obtained a handle to the object, connected it to a layout manager, and attached an adapter for the data to be displayed. 首先将
RecyclerView
小部件添加到布局中,获取对象的句柄,将其连接到布局管理器,并附加一个适配器以显示数据。 Please check the documentation for more information. 请检查文档以获取更多信息。
And, you may want to also check the following references for additional insights: 并且,您可能还需要检查以下参考资料以获得更多见解:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.