ListView is one of the interesting and complicated viewgroups in Android. ListView contains a collection of scrollable list items. In this post I am going to explain how to create a custom ListView, which contains images and texts.
Step 1: Create a new Project named MyCustomListView
Refer: How to Create and Run Your First Android Project
Step 2: Create listview_screen.xml
Create a xml file named as listview_screen.xml under res/layout. This file is the screen layout that contains our custom listview.
<?xml version="1.0" encoding="utf-8"?>
<linearlayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="fill_parent" android:layout_width="fill_parent"
android:orientation="vertical">
<listview android:id="@+id/myCustomListView"
android:layout_height="wrap_content"
android:layout_width="fill_parent">
</listview>
</linearlayout>
Step 3: Create custom_listview_item.xml
Here you will create a xml file named custom_listview_item.xml under res/layout. This layout file determines the contents of each listitem within our listview.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<ImageView
android:id="@+id/image_listitem"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"/>
<TextView
android:id="@+id/text_listitem"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginLeft="20dp"
android:text="dfdfdf"
/>
</LinearLayout>
Step 4: Create CustomListAdapter class
Next you have to create a custom list adapter class extended from BaseAdapter. This custom adapter class is used to set as the adapter of our custom ListView.
import java.util.ArrayList;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
public class CustomListAdapter extends BaseAdapter{
Context _context;
private ArrayList<String> _list;
public CustomListAdapter(Context context,
ArrayList<String> listItems) {
_context= context;
_list = listItems;
}
public int getCount(){
return _list.size();
}
public long getItemId(int position){
return position;
}
public Object getItem(int position){
return _list.get(position);
}
//this function will be called to draw each row
//for the listview
public View getView(int position,View convertView,ViewGroup parent){
ViewContainer container = new ViewContainer();
if(convertView == null){
LayoutInflater inflater = LayoutInflater.from(_context);
convertView = inflater.inflate(R.layout.custom_listview_item,parent, false);
convertView.setTag(container);
container.listIcon = (ImageView)convertView.findViewById(R.id.image_listitem);
container.listText = (TextView)convertView.findViewById(R.id.text_listitem);
}
container = (ViewContainer) convertView.getTag();
ImageView myListIcon = container.listIcon;
TextView myListText = container.listText;
myListIcon.setBackgroundDrawable(_context.getResources().getDrawable(R.drawable.list_icon));
myListText.setText(_list.get(position));
container = null;
return convertView;
}
private class ViewContainer{
private ImageView listIcon;
private TextView listText;
}
}
Step 5: Create MyCustomViewActivity class
Finally, you need to create MyCustomViewActivity class extended from Activity, where we will set the custom adapter to our listview.
import java.util.ArrayList;
import android.app.Activity;
import android.os.Bundle;
import android.widget.ListView;
public class MyCustomListViewActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.listview_screen);
ArrayList<String> arrListItems = new ArrayList<String>();
arrListItems.add("ListItem1");
arrListItems.add("ListItem2");
arrListItems.add("ListItem3");
arrListItems.add("ListItem4");
arrListItems.add("ListItem5");
ListView listView = (ListView)findViewById(R.id.myCustomListView);
listView.setAdapter(new CustomListAdapter(this, arrListItems));
}
}
That's it.. now you need to just run the project and you will see the output as follows.
Cheers,
Have a nice day. View Complete List of Tips

