No se puede obtener todo usuario en ASMACK
Pregunta
Estoy desarrollando la aplicación de chat en Android Base en Asmack Lib. Creo 1 usuario y agrego 3 amigos en la lista de amigos. Cuando uso la lista para mostrar la lista de amigos. No puedo obtener todo usuario en la lista de amigos, solo 1 usuario. Mi código aquí:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.tab_set);
TextView textview = new TextView(this);
setContentView(textview);
Roster roster = Controller.getInstance().connection.getRoster();
Collection<RosterEntry> entries = roster.getEntries();
for(RosterEntry r:entries)
{
textview.setText(r.getName());
}
Gracias por su respuesta, es muy útil. Tengo otra pregunta. ¿Cómo mostrar la lista de amigos como listview en Android? Intento ponerlo en la matriz pero no funciona.
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.tab_set);
String buddy;
Roster roster = Controller.getInstance().connection.getRoster();
Collection<RosterEntry> entries = roster.getEntries();
for(RosterEntry r:entries)
{
buddy = textview.getText() + r.getName();
Controller.getInstance().values = new String[]{buddy};
}
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, Controller.getInstance().values);
setListAdapter(adapter);
Solución
Solo tiene un amigo en su View de Text porque está cambiando el texto para cada iteración.
Pruebe algo como TextView.settext (textView.gettext () + r.getName ()); o agregue una nueva vista de texto para cada amigo
Otros consejos
Esta es mi lista de amigos
public class BuddiesList extends Activity {
ListView list;
Roster roster;
static Buddy[] buddyList;
public void onCreate(Bundle b) {
super.onCreate(b);
setContentView(R.layout.buddies);
roster = AsmackTestingActivity.xmpp.getRoster();
ArrayList<Buddy> buddies = new ArrayList<Buddy>();
Collection<RosterEntry> entries = roster.getEntries();
buddyList = new Buddy[entries.size()];
ProviderManager.getInstance().addIQProvider("vCard", "vcard-temp", new VCardProvider());
Buddy bud = null;
VCard card = null;
int i = 0;
for (RosterEntry entry:entries) {
bud = new Buddy();
card = new VCard();
try {
card.load(AsmackTestingActivity.xmpp, entry.getUser());
} catch (Exception e) {
e.printStackTrace();
}
bud.jid = entry.getUser();
bud.name = card.getField("FN");
if (bud.name == null)
bud.name = bud.jid;
buddies.add(bud);
byte[] img = card.getAvatar();
if (img != null) {
int len = img.length;
bud.img = BitmapFactory.decodeByteArray(img, 0, len);
}
buddyList[i++] = bud;
}
final BuddyAdapter adapter = new BuddyAdapter(this, buddies);
list = (ListView) findViewById(R.id.buddiesList);
list.setAdapter(adapter);
list.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Intent intent = new Intent(BuddiesList.this, AsmackChat.class);
intent.putExtra("username", adapter.getItem(position).jid);
startActivity(intent);
}
});
}
class BuddyAdapter extends ArrayAdapter<Buddy> {
public BuddyAdapter(Context context, ArrayList<Buddy> items) {
super(context, R.id.buddyName, items);
}
@Override
public View getView(int position, View convertView, ViewGroup parentView) {
Buddy bud = getItem(position);
ViewHolder holder = null;
if (convertView == null) {
convertView = getLayoutInflater().inflate(R.layout.buddy, null);
holder = new ViewHolder();
holder.name = (TextView) convertView.findViewById(R.id.buddyName);
holder.thumb = (ImageView) convertView.findViewById(R.id.buddyThumb);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.name.setText(bud.name);
holder.thumb.setImageBitmap(bud.img);
return convertView;
}
}
class Buddy {
String jid;
String name;
int status;
Bitmap img;
}
class ViewHolder {
ImageView thumb;
TextView name;
}
Layout buddies.xml:
<?xml version="1.0" encoding="utf-8"?>
<ListView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/buddiesList"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
</ListView>
Y diseño amigo.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:padding="5dp">
<ImageView
android:id="@+id/buddyThumb"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingRight="5dp" />
<TextView
android:id="@+id/buddyName"
android:layout_toRightOf="@id/buddyThumb"
android:layout_centerVertical="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#FFFFFFFF"/>
</RelativeLayout>