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);
¿Fue útil?

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>
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top