Code: Select all
package com.example.listviewexample;
import java.util.ArrayList;
import android.os.Bundle;
import android.app.Activity;
import android.widget.ListView;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// carico il layout nell'activity
setContentView(R.layout.activity_main);
// costruisco l'oggetto per il test
ArrayList<Contact> lista = new ArrayList<Contact>();
lista.add( new Contact("Fabio","53817") );
lista.add( new Contact("Roma","0642443") );
lista.add( new Contact("Cell","6384131") );
lista.add( new Contact("Califo","760405") );
// istanzio il listview e lo collego al mio layout
ListView myListView = (ListView) findViewById(R.id.myListView);
// creo l' adapter personalizzato e gli passo:
// context, layout del singolo elemento, array valori da caricare
MyAdapter adapter = new MyAdapter(this,R.layout.element,lista);
// collego l'adapter al listView
myListView.setAdapter(adapter);
}
}
Contact.java
Code: Select all
package com.example.listviewexample;
public class Contact {
private String name;
private String number;
Contact(String nam, String num) {
this.name = nam;
this.number = num;
}
public void add(String nam, String num) {
this.name = nam;
this.number = num;
}
public String getName() {
return name;
}
public String getNumber() {
return number;
}
}
MyAdapter.java
Code: Select all
package com.example.listviewexample;
import java.util.ArrayList;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.TextView;
// estendo ArrayAdapter di tipo <Contact>
public class MyAdapter extends ArrayAdapter<Contact> {
private Context context;
private ArrayList<Contact> contactList;
// costruttore:
// context, layout singolo elemento , array valori
public MyAdapter(Context c, int textViewResourceId, ArrayList<Contact>
list ) {
super(c, textViewResourceId,list);
context = c;
contactList = list;
}
// faccio overrride del metodo getView:
// numero elemento, la view degli elementi, parent view ??
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView==null) {
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.element, parent, false);
}
// prendo i due TextView dalla View
TextView name = (TextView) convertView.findViewById(R.id.name);
TextView number = (TextView) convertView.findViewById(R.id.number);
// aggiorno i campi dei due TextView
name.setText(contactList.get(position).getName() );
number.setText(contactList.get(position).getNumber() );
//ritorno la view modificata
return convertView;
}
}
------------------------layout----------------
activity_main.xml
Code: Select all
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<ListView
android:id="@+id/myListView"
android:layout_width="match_parent"
android:layout_height="298dp" >
</ListView>
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/hello_world" />
</LinearLayout>
element.xml
Code: Select all
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal" >
<TextView
android:id="@+id/number"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="10dp"
android:textSize="20sp" >
</TextView>
<TextView
android:id="@+id/name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="10dp"
android:textSize="20sp" >
</TextView>
</LinearLayout>