У меня возникла проблема с отображением нового элемента из node JS, проблема в том, что предыдущий элемент заменил новый элемент, Мой Android код
private void getDiskusiChat(String tabelchat) {
socket.on(tabelchat, new Emitter.Listener() {
@Override
public void call(final Object... args) {
if(getActivity() == null)
return;
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
JSONObject data = (JSONObject) args[0];
try {
//extract data from fired event
String namaget = String.valueOf(data.getString("nama"));
String pesanget = String.valueOf(data.getString("pesan"));
String iduserget = String.valueOf(data.getString("idleveluser"));
String leveluserget = String.valueOf(data.getString("level"));
String leveluserget2 = String.valueOf(Html.fromHtml(leveluserget));
String replyget = String.valueOf(data.getString("reply"));
String createdget = String.valueOf(data.getString("created_at"));
Log.i("cek", "cek socket.on : " + namaget+":"+pesanget+":"
+iduserget+":"+leveluserget+":"+replyget+":"+createdget);
String leveluserget4 = "";
if (leveluserget2.equals("Teacher")){
leveluserget4 = "teacher";
}else if (leveluserget2.equals("Administrator")){
leveluserget4 = "administrator";
}else if (leveluserget2.isEmpty()){
leveluserget4 = "member";
}
String[]pisahid = iduserget.split("-");
String leveluserget3 = pisahid[0];
SemuaChat semuaChat = new SemuaChat(leveluserget4, pesanget, replyget, createdget, namaget);
kelasget.add(semuaChat);
mAdapter = new AdapterDiskusi(mContext, kelasget);
mRecyclerView.getLayoutManager().onRestoreInstanceState(recyclerViewState);
mRecyclerView.getLayoutManager().smoothScrollToPosition(mRecyclerView,new RecyclerView.State(), kelasget.size());
NotificationManager notif=(NotificationManager)getActivity().getSystemService(Context.NOTIFICATION_SERVICE);
Notification notify= null;
notify = new Notification.Builder
(getActivity())
.setContentTitle("Pesan Baru")
.setContentText(pesanget)
.setContentTitle(namaget)
.setSmallIcon(R.drawable.pesanmasuk)
.setSound(Settings.System.DEFAULT_NOTIFICATION_URI)
.build();
notify.flags |= Notification.FLAG_AUTO_CANCEL;
notif.notify(0, notify);
} catch (JSONException e) {
e.printStackTrace();
}
}
});
}
});
}
Мой адаптер включен
@Override
public void onBindViewHolder (final AdapterDiskusi.MyViewHolder holder, final int position){
final SemuaChat listartikel = ChatList.get(position);
ApiConfig apiConfig = new ApiConfig();
holder.tgl.setText( listartikel.getCreated());
if (ChatList.get(position).getLeveluser().equals("admin")){
holder.pesan.setText(listartikel.getPesan());
holder.lvluser.setText(" ("+listartikel.getLeveluser()+" )");
InterfaceMember MemberapiInterface;
MemberapiInterface = ApiClient.createService(InterfaceMember.class, apiConfig.USERNAME, apiConfig.PASSWORD);
Call<ResponseBody> kontakCall = MemberapiInterface.ProfilAdmin(ChatList.get(position).getId_user());
kontakCall.enqueue(new Callback<ResponseBody>() {
@Override
public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
ResponseBody KontakList = response.body();
holder.nama.setText("Admin");
}
@Override
public void onFailure(Call<ResponseBody> call, Throwable t) {
Log.e("Retrofit Get", t.toString());
}
});
}else if (ChatList.get(position).getLeveluser().equals("administrator")){
holder.nama.setText("Admin");
holder.pesan.setText(Html.fromHtml(listartikel.getPesan()));
holder.lvluser.setText(" ("+"admin"+" )");
}else if (ChatList.get(position).getLeveluser().equals("teacher")){
holder.nama.setText(listartikel.getNama());
holder.pesan.setText(Html.fromHtml(listartikel.getPesan()));
holder.lvluser.setText(" ("+"ahli"+" )");
}else if (ChatList.get(position).getLeveluser().equals("member")){
holder.nama.setText(listartikel.getNama());
holder.pesan.setText(Html.fromHtml(listartikel.getPesan()));
holder.lvluser.setText("");
} else if (ChatList.get(position).getLeveluser().equals("ahli")){
holder.lvluser.setText(" ("+listartikel.getLeveluser()+" )");
holder.pesan.setText(listartikel.getPesan());
if (ChatList.get(position).getNama()!= null){
holder.nama.setText(ChatList.get(position).getNama());
}else{
InterfaceMitraAhli MemberapiInterface;
MemberapiInterface = ApiClient.createService(InterfaceMitraAhli.class, apiConfig.USERNAME,apiConfig.PASSWORD);
Call<List<ProfileMitraAhli>> kontakCall = MemberapiInterface.ProfilAhli(ChatList.get(position).getId_user());
kontakCall.enqueue(new Callback<List<ProfileMitraAhli>>() {
@Override
public void onResponse(Call <List<ProfileMitraAhli>> call, Response<List<ProfileMitraAhli>> response) {
List<ProfileMitraAhli> KontakList = response.body();
holder.nama.setText(KontakList.get(0).getNama());
}
@Override
public void onFailure(Call<List<ProfileMitraAhli>> call, Throwable t) {
Log.e("Retrofit Get", t.toString());
}
});
}
}else if (ChatList.get(position).getLeveluser().equals("user")){
holder.lvluser.setText("");
holder.pesan.setText(listartikel.getPesan());
if (ChatList.get(position).getNama()!=null){
holder.nama.setText(ChatList.get(position).getNama());
}else {
InterfaceMember MemberapiInterface;
MemberapiInterface = ApiClient.createService(InterfaceMember.class, apiConfig.USERNAME, apiConfig.PASSWORD);
Call<List<ProfileMember>> kontakCall = MemberapiInterface.ProfilUser(ChatList.get(position).getId_user());
kontakCall.enqueue(new Callback<List<ProfileMember>>() {
@Override
public void onResponse(Call<List<ProfileMember>> call, Response<List<ProfileMember>> response) {
List<ProfileMember> KontakList = response.body();
holder.nama.setText(KontakList.get(0).getNama());
}
@Override
public void onFailure(Call<List<ProfileMember>> call, Throwable t) {
Log.e("Retrofit Get", t.toString());
}
});
}
}
}
Мой Node JS
io.on('connection', function (socket) {
console.log( "New client connected !" );
//console.log(socket.handshake.headers.host);
socket.on( 'new_chat_kelas', function( data ) {
io.sockets.emit( data.tabelchat, {
idleveluser: data.idleveluser,
nama: data.nama,
level: data.level,
idchat: data.idchat,
pesan: data.pesan,
file: data.file,
reply: data.reply,
created_at: data.created_at
});
});
это мой ScreenShoot, я могу получить данные с узла, но не могу установить c значение для имени в новом элементе
если я перефразирую sh, все возвращается в нормальное состояние, как это
Может ли кто-нибудь мне помочь? Я благодарен, если кто-то может решить мою проблему