1
我是新來的Android開發人員,我試圖創建一個聯繫人列表,左側的圖片和聯繫人的名稱列表。ViewHolder創建與自定義適配器的聯繫人列表
所以我跟着一個教程,寫了這段代碼,它沒有顯示任何東西,你有什麼想法它可能來自哪裏?
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>
它的工作原理,謝謝! –
很高興知道。 Bon勇氣:) – NSimon