简体   繁体   English

在recycleView中为不同的项目加载不同的聊天模型

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM