How to customize listview using baseadapter How to customize listview using baseadapter android android

How to customize listview using baseadapter


main.xml:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    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/list"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:layout_alignParentLeft="true"        android:layout_alignParentTop="true" >    </ListView></RelativeLayout>

custom.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" >    <LinearLayout        android:layout_width="match_parent"        android:layout_height="wrap_content" >        <LinearLayout            android:layout_width="255dp"            android:layout_height="wrap_content"            android:orientation="vertical" >            <LinearLayout                android:layout_width="match_parent"                android:layout_height="wrap_content"                android:orientation="vertical" >                <TextView                    android:id="@+id/title"                    android:layout_width="wrap_content"                    android:layout_height="wrap_content"                    android:text="Video1"                    android:textAppearance="?android:attr/textAppearanceLarge"                    android:textColor="#339966"                    android:textStyle="bold" />            </LinearLayout>            <LinearLayout                android:layout_width="match_parent"                android:layout_height="wrap_content"                android:orientation="vertical" >                <TextView                    android:id="@+id/detail"                    android:layout_width="wrap_content"                    android:layout_height="wrap_content"                    android:text="video1"                    android:textColor="#606060" />            </LinearLayout>        </LinearLayout>        <ImageView            android:id="@+id/img"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:src="@drawable/ic_launcher" />    </LinearLayout></LinearLayout>

main.java:

package com.example.sample;import android.app.Activity;import android.os.Bundle;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.ImageView;import android.widget.ListView;import android.widget.TextView;public class MainActivity extends Activity {    ListView l1;    String[] t1={"video1","video2"};    String[] d1={"lesson1","lesson2"};    int[] i1 ={R.drawable.ic_launcher,R.drawable.ic_launcher};    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);        l1=(ListView)findViewById(R.id.list);        l1.setAdapter(new dataListAdapter(t1,d1,i1));    }    class dataListAdapter extends BaseAdapter {        String[] Title, Detail;        int[] imge;        dataListAdapter() {            Title = null;            Detail = null;            imge=null;        }        public dataListAdapter(String[] text, String[] text1,int[] text3) {            Title = text;            Detail = text1;            imge = text3;        }        public int getCount() {            // TODO Auto-generated method stub            return Title.length;        }        public Object getItem(int arg0) {            // TODO Auto-generated method stub            return null;        }        public long getItemId(int position) {            // TODO Auto-generated method stub            return position;        }        public View getView(int position, View convertView, ViewGroup parent) {            LayoutInflater inflater = getLayoutInflater();            View row;            row = inflater.inflate(R.layout.custom, parent, false);            TextView title, detail;            ImageView i1;            title = (TextView) row.findViewById(R.id.title);            detail = (TextView) row.findViewById(R.id.detail);            i1=(ImageView)row.findViewById(R.id.img);            title.setText(Title[position]);            detail.setText(Detail[position]);            i1.setImageResource(imge[position]);            return (row);        }    }}

Try this.


public class ListElementAdapter extends BaseAdapter{    String[] data;    Context context;    LayoutInflater layoutInflater;    public ListElementAdapter(String[] data, Context context) {        super();        this.data = data;        this.context = context;        layoutInflater = LayoutInflater.from(context);    }    @Override    public int getCount() {        return data.length;    }    @Override    public Object getItem(int position) {        return null;    }    @Override    public long getItemId(int position) {        return position;    }    @Override    public View getView(int position, View convertView, ViewGroup parent) {        convertView= layoutInflater.inflate(R.layout.item, null);        TextView txt=(TextView)convertView.findViewById(R.id.text);        txt.setText(data[position]);        return convertView;    }}

Just call ListElementAdapter in your Main Activity and set Adapter to ListView.


Create your own BaseAdapter class and use it as following.

 public class NotificationScreen extends Activity{@Overrideprotected void onCreate_Impl(Bundle savedInstanceState){    setContentView(R.layout.notification_screen);    ListView notificationList = (ListView) findViewById(R.id.notification_list);    NotiFicationListAdapter notiFicationListAdapter = new NotiFicationListAdapter();    notificationList.setAdapter(notiFicationListAdapter);    homeButton = (Button) findViewById(R.id.home_button);}}

Make your own BaseAdapter class and its separate xml file.

public class NotiFicationListAdapter  extends BaseAdapter{private ArrayList<HashMap<String, String>> data;private LayoutInflater inflater=null;public NotiFicationListAdapter(ArrayList data){this.data=data;            inflater =(LayoutInflater)baseActivity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);}public int getCount() { return data.size();}public Object getItem(int position) { return position;}public long getItemId(int position) {    return position;}public View getView(int position, View convertView, ViewGroup parent) {View vi=convertView;    if(convertView==null)    vi = inflater.inflate(R.layout.notification_list_item, null);    ImageView compleatImageView=(ImageView)vi.findViewById(R.id.complet_image);    TextView name = (TextView)vi.findViewById(R.id.game_name); // name    TextView email_id = (TextView)vi.findViewById(R.id.e_mail_id); // email ID    TextView notification_message = (TextView)vi.findViewById(R.id.notification_message); // notification message    compleatImageView.setBackgroundResource(R.id.address_book);    name.setText(data.getIndex(position));    email_id.setText(data.getIndex(position));    notification_message.setTextdata.getIndex(position));    return vi;}  }

BaseAdapter xml file.

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"android:id="@+id/inner_layout"android:layout_width="fill_parent"android:layout_height="wrap_content"android:layout_marginBottom="5dp"android:layout_marginLeft="10dp"android:layout_weight="4"android:background="@drawable/list_view_frame"android:gravity="center_vertical"android:padding="5dp" ><TextView    android:id="@+id/game_name"    android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:text="Game name"    android:textColor="#FFFFFF"    android:textSize="15dip"    android:textStyle="bold"    android:typeface="sans" /><TextView    android:id="@+id/e_mail_id"    android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:layout_below="@id/game_name"    android:layout_marginTop="1dip"    android:text="E-Mail Id"    android:textColor="#FFFFFF"    android:textSize="10dip" /><TextView    android:id="@+id/notification_message"    android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:layout_below="@id/game_name"    android:layout_toRightOf="@id/e_mail_id"    android:paddingLeft="5dp"    android:text="Notification message"    android:textColor="#FFFFFF"    android:textSize="10dip" /><ImageView    android:id="@+id/complet_image"    android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:layout_alignParentRight="true"    android:layout_centerVertical="true"    android:layout_marginBottom="30dp"    android:layout_marginRight="10dp"    android:src="@drawable/complete_tag"    android:visibility="invisible" /></RelativeLayout>

Change it accordingly and use.