Ich bin neu bei Android Dev und ich versuche, eine Kontaktliste, eine Liste mit einem Bild auf der linken Seite und den Namen des Kontakts zu erstellen.ViewHolder zum Erstellen von Kontaktliste mit benutzerdefinierten Adapter
Also ich folgte einem Tutorial und schrieb diesen Code, der nichts anzeigt, haben Sie eine Ahnung von was es kommen könnte?
MainActivity.java:
public class MainActivity extends Activity {
ListView list;
private ArrayList<Contact> List = new ArrayList<Contact>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Contact Nico = new Contact("nico",R.drawable.smileyhappy);
Contact Sev = new Contact("Sev",R.drawable.smileyveryhappy);
List.add(Nico);
List.add(Sev);
CustomList adapter = new CustomList(MainActivity.this,List);
list=(ListView)findViewById(R.id.list);
list.setAdapter(adapter);
list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
Toast.makeText(MainActivity.this, "You Clicked at " + List.get(+position).toString(), Toast.LENGTH_SHORT).show();
}
});
}
}
CustomList.java
public class CustomList extends BaseAdapter{
LayoutInflater mInflater;
Activity Context;
ArrayList<Contact> contactList = null;
public CustomList(Activity context, ArrayList<Contact> contactList) {
this.Context=context;
this.contactList = contactList;
}
static class ViewHolder {
public TextView mNom;
public ImageView mPhoto;
}
@Override
public int getCount() {
return 0;
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public long getItemId(int position) {
return 0;
}
public View getView(int r, View convertView, ViewGroup parent) {
ViewHolder holder ;
// Si la vue n'est pas recyclée
if(convertView == null) {
// On récupère le layout
LayoutInflater mInflater = Context.getLayoutInflater();
convertView = mInflater.inflate(R.layout.list_single, null);
holder = new ViewHolder();
// On place les widgets de notre layout dans le holder
holder.mNom = (TextView) convertView.findViewById(R.id.txt);
holder.mPhoto = (ImageView) convertView.findViewById(R.id.img);
// puis on insère le holder en tant que tag dans le layout
convertView.setTag(holder);
} else {
// Si on recycle la vue, on récupère son holder en tag
holder = (ViewHolder)convertView.getTag();
}
// Dans tous les cas, on récupère le contact téléphonique concerné
Contact c = (Contact)getItem(r);
// Si cet élément existe vraiment…
if(c != null) {
System.out.println("coucou");
// On place dans le holder les informations sur le contact
holder.mNom.setText(c.getNom());
holder.mPhoto.setImageResource(c.getImageId());
}
return convertView;
}
}
Contact.java
public class Contact {
String nom;
int ImageId;
public Contact(String nom, int imageId) {
this.nom = nom;
ImageId = imageId;
}
public String getNom() {
return nom;
}
public int getImageId() {
return ImageId;
}
public void setNom(String nom) {
this.nom = nom;
}
public void setImageId(int imageId) {
ImageId = imageId;
}
}
list_single.xml
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<RelativeLayout>
<ImageView
android:id="@+id/img"
android:layout_width="50dp"
android:layout_height="50dp"/>
<TextView
android:id="@+id/txt"
android:layout_toRightOf="@id/img"
android:layout_width="wrap_content"
android:layout_height="50dp" />
</RelativeLayout>
</TableLayout>
Es funktioniert, Danke! –
Gut zu wissen. Guten Mut :) – NSimon