Je construis une application de chat Android avec quickblox .. et quand je veux récupérer la liste des dialogues de chats et la liste des utilisateurs il n'est pas apparu sur mon écran .. j'avais cherché ce problème et je trouve que je devais activer la liste des utilisateurs récupération .. donc je l'ai fait, mais rien changé ... Voici mon code ChatDialogsList:QuickBlox récupérer des dialogues de causerie Android
package shashoug.com.zoolisd;
import android.app.ProgressDialog;
import android.content.Intent;
import android.support.design.widget.FloatingActionButton;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.ListView;
import com.quickblox.auth.QBAuth;
import com.quickblox.auth.session.BaseService;
import com.quickblox.auth.session.QBSession;
import com.quickblox.auth.session.QBSettings;
import com.quickblox.chat.QBChatService;
import com.quickblox.chat.QBRestChatService;
import com.quickblox.chat.model.QBChatDialog;
import com.quickblox.core.QBEntityCallback;
import com.quickblox.core.exception.BaseServiceException;
import com.quickblox.core.exception.QBResponseException;
import com.quickblox.core.request.QBRequestGetBuilder;
import com.quickblox.users.model.QBUser;
import java.util.ArrayList;
import shashoug.com.zoolisd.Adapter.ChatDialogAdapter;
public class ChatDialogActivity extends AppCompatActivity {
private ListView chatListDialogs;
private FloatingActionButton floatingActionButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_chat_dialog);
floatingActionButton = (FloatingActionButton) findViewById(R.id.fab);
chatListDialogs = (ListView) findViewById(R.id.lstChatsDialog);
createSessionForChat();
loadAllChat();
floatingActionButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(ChatDialogActivity.this,ListUsersActivity.class);
startActivity(intent);
}
});
}
private void loadAllChat() {
QBRequestGetBuilder requestBuilder = new QBRequestGetBuilder();
requestBuilder.setLimit(100);
QBRestChatService.getChatDialogs(null,requestBuilder).performAsync(new QBEntityCallback<ArrayList<QBChatDialog>>() {
@Override
public void onSuccess(ArrayList<QBChatDialog> qbChatDialogs, Bundle bundle) {
ChatDialogAdapter adapter = new ChatDialogAdapter(getBaseContext(),qbChatDialogs);
chatListDialogs.setAdapter(adapter);
adapter.notifyDataSetChanged();
}
@Override
public void onError(QBResponseException e) {
Log.e("ERROR",e.getMessage());
}
});
}
private void createSessionForChat() {
final ProgressDialog mDialog = new ProgressDialog(ChatDialogActivity.this);
mDialog.setTitle("Retreiveing The Dialogs");
mDialog.setMessage("Please Wait While We Collecting your Chats Info.");
mDialog.setCanceledOnTouchOutside(false);
mDialog.show();
String name,password;
name = getIntent().getStringExtra("name");
password = getIntent().getStringExtra("password");
final QBUser qbUser = new QBUser(name,password);
QBAuth.createSession(qbUser).performAsync(new QBEntityCallback<QBSession>() {
@Override
public void onSuccess(QBSession qbSession, Bundle bundle) {
mDialog.dismiss();
qbUser.setId(qbSession.getUserId());
try {
qbUser.setPassword(BaseService.getBaseService().getToken());
} catch (BaseServiceException e) {
e.printStackTrace();
}
QBChatService.getInstance().login(qbUser, new QBEntityCallback() {
@Override
public void onSuccess(Object o, Bundle bundle) {
mDialog.dismiss();
}
@Override
public void onError(QBResponseException e) {
Log.e("ERROR",e.getMessage());
}
});
}
@Override
public void onError(QBResponseException e) {
Log.e("ERROR",e.getMessage());
}
});
}
}
et voici mon code ChatsDialogAdapter:
package shashoug .com.zoolisd.Adapter;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import com.amulyakhare.textdrawable.TextDrawable;
import com.amulyakhare.textdrawable.util.ColorGenerator;
import com.quickblox.chat.model.QBChatDialog;
import java.util.ArrayList;
import shashoug.com.zoolisd.R;
public class ChatDialogAdapter extends BaseAdapter {
private Context context;
private ArrayList<QBChatDialog> qbChatDialogs;
public ChatDialogAdapter(Context context, ArrayList<QBChatDialog> qbChatDialogs) {
this.context = context;
this.qbChatDialogs = qbChatDialogs;
}
@Override
public int getCount() {
return qbChatDialogs.size();
}
@Override
public Object getItem(int position) {
return qbChatDialogs.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view = convertView;
if (view ==null)
{
LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = inflater.inflate(R.layout.list_chat_dialog,null);
TextView txtTitle;
TextView txtMessage;
ImageView imageView;
txtTitle = (TextView) view.findViewById(R.id.list_chat_dialog_title);
txtMessage = (TextView) view.findViewById(R.id.list_chat_dialog_message);
imageView = (ImageView) view.findViewById(R.id.image_chat_dialog);
txtMessage.setText(qbChatDialogs.get(position).getLastMessage());
txtTitle.setText(qbChatDialogs.get(position).getName());
ColorGenerator generator = ColorGenerator.MATERIAL;
int randomColor = generator.getRandomColor();
TextDrawable.IBuilder builder = TextDrawable.builder().beginConfig()
.withBorder(4)
.endConfig()
.round();
TextDrawable drawable = builder.build(txtTitle.getText().toString().substring(0,1).toUpperCase(),randomColor);
imageView.setImageDrawable(drawable);
}
return view;
}
}
avez-vous utilisé ma solution ci-dessous? quel était le résultat? –