Payday Loan Payday Loan

Archive for July 12th, 2012

How to create an Adapter for a Listview

Hi, this is my first tutorial here. I hope you’ll enjoy it. Ok, let’s start.

Let’s say that we want to create a Listview more different. We do not want to have only a small text, we want a button , a checkbox etc. in every Listview item. Here is a small tutorial where you can learn how to create an Adapter, the ” thing ” that will help us to personalize the ListView.

Ok, here is a small project where we’ll have:

-two classes : Listview.class (the class where we have  the Listview ) and the ListviewAdapter.class ( the class which cantains the adapter for the Listview, with its help will populate the Listview as we want )

-two XML files : one where is the Listview and one where is the “design ” for each item. I’ve named them listview.xml and listview_row.xml .

I’ve decided to create an Adapter for a Listview whose each item will contain two Textviews , one for Firstname other for Lastname.Here is the content that we’re interested in. I will explain it by adding comments in the Java code.

Listview.class :

public class Listview extends Activity {
 
	//Here are variables which contains the unique "keys", one for  every text in a single Listview row. 
	static final String KEY_FIRSTNAME = "firstname",KEY_LASTNAME="lastname";
 
	//Here are two arrays which contains some "interesting" words. Sorry, I had no inspiration.
	String[] firstname = {"Gates","Cheese","Apple","Computer","Noidea","Something","Bestintheworld"}; 
	String[] lastname = {"Tom","Dan","Andrew","Tyler","Austin","Jane","Bill"};
 
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.listview);
 
        //We declare the Listview. I had so much inspiration that I called it - listview .Yes, amazing.
        ListView listview = (ListView) findViewById(R.id.lvGenuine);
 
        //This arraylist stores all the the information that will be in the ListView
        ArrayList<HashMap<String, String>> myArrayList = new ArrayList<HashMap<String, String>>();
 
        //I need this " lenth" for the "for " part.
        int length = firstname.length;
 
 
        //I guess you know what this is.
        for(int i=0;i<length;i++){
 
        	// This hashmap stores the information that exists only in the item. 
        HashMap<String, String> blablabla  = new HashMap<String, String>();
		blablabla.put(KEY_FIRSTNAME, firstname[i]);
		blablabla.put(KEY_LASTNAME, lastname[i]);
 
		//we save the hashmap in the ArrayList . Big thing retains the small one.
		myArrayList.add(blablabla);
 
        }
 
        //We declare the adapter using the other class
        ListviewAdapter adapter = new ListviewAdapter(this,myArrayList);
        //We set the adapter, here is the "place" where we populate the List.
        listview.setAdapter(adapter);
 
    }
}

ListviewAdapter.class:

public class ListviewAdapter extends BaseAdapter {//To create an adapter we have to extend BaseAdapter instead of Activity, or whatever.
 
    private Activity activity;
    private ArrayList<HashMap<String, String>> data;
    private static LayoutInflater inflater=null;
 
 
    public ListviewAdapter(Activity a, ArrayList<HashMap<String, String>> d) {
        activity = a;
        data=d;
        inflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
 
    }
 
    public int getCount() {   //get the number of elements in the listview
        return data.size();
    }
 
    public Object getItem(int position) {   //this method returns on Object by position
        return position;
    }
 
    public long getItemId(int position) {   //get item id by position
        return position;
    }
 
    public View getView(int position, View convertView, ViewGroup parent) {   //getView method is the method which populates the listview with our personalized rows
        View vi=convertView;
        if(convertView==null)
            vi = inflater.inflate(R.layout.listview_row, null);       //every item in listview uses xml "listview_row"'s design 
 
        TextView firstname = (TextView)vi.findViewById(R.id.tvFirstname);  //Here are two textviews in the listview_row xml file
        TextView lastname = (TextView)vi.findViewById(R.id.tvLastname);   // You can enter anything you want, buttons, radiobuttons, images, etc.
 
 
 
        HashMap<String, String> hash = new HashMap<String, String>();  //We need a HashMap to store our data for any item
        hash = data.get(position);
 
 
        firstname.setText(hash.get(Listview.KEY_FIRSTNAME));  //We personalize our row's items.
        lastname.setText(hash.get(Listview.KEY_LASTNAME));
 
 
        return vi;
    }
}

listview.xml :

<?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="vertical" >
 
    <ListView
        android:id="@+id/lvGenuine"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >
    </ListView>
 
</LinearLayout>

and finally listview_row.xml :

<?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="vertical" >
 
    <TextView
        android:id="@+id/tvFirstname"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Firstname"
        android:layout_marginLeft="20dip"
        android:textSize="25dip" />
 
    <TextView
        android:id="@+id/tvLastname"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Lastname"
        android:layout_marginLeft="40dip"
        android:textSize="15dip" />
 
</LinearLayout>

Here is a screenshot where you can see how it looks like :

You can download the entire project from here .

I hope you enjoyed the tutorial. I wait any kind of reviews and critics which I promise I will read and will think about them. If you’d like to see any tutorial for Android Development on www.androidgeniune.com you can leave a comment with your wish and I’ll try to help you.

This is all for now. Thank you for reading. See you !

 

||||| 0 I Like It! |||||

Search

Popular

Sponsors