customized ArrayAdapter for ListView

fabiodelorenzo
Posts: 65
Joined: Thu Oct 03, 2013 5:54 pm

customized ArrayAdapter for ListView

Postby fabiodelorenzo » Tue Jan 21, 2014 12:05 am

MainActivity.java

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>

Return to “ListView and ArrayAdapter”

Who is online

Users browsing this forum: No registered users and 1 guest