Custom ListView items and adapters
we will learn how to make Custom ListView items
description:
Tutorial_Listview_CustomListViewItemsAndAdaptersActivity.java
package com.powenko.Tutorial_Listview_CustomListViewItemsAndAdaptersActivity; import java.util.ArrayList; import android.app.ListActivity; import android.app.ProgressDialog; import android.content.Context; import android.os.Bundle; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.TextView; public class Tutorial_Listview_CustomListViewItemsAndAdaptersActivity extends ListActivity{ private ProgressDialog m_ProgressDialog = null; private ArrayList<Order> m_orders = null; private OrderAdapter m_adapter; private Runnable viewOrders; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); m_orders = new ArrayList<Order>(); this.m_adapter = new OrderAdapter(this, R.layout.row, m_orders); setListAdapter(this.m_adapter); viewOrders = new Runnable(){ @Override public void run() { getOrders(); } }; Thread thread = new Thread(null, viewOrders, "MagentoBackground"); thread.start(); m_ProgressDialog = ProgressDialog.show(Tutorial_Listview_CustomListViewItemsAndAdaptersActivity.this, "Please wait...", "Retrieving data ...", true); } private Runnable returnRes = new Runnable() { @Override public void run() { if(m_orders != null && m_orders.size() > 0){ m_adapter.notifyDataSetChanged(); for(int i=0;i<m_orders.size();i++) m_adapter.add(m_orders.get(i)); } m_ProgressDialog.dismiss(); m_adapter.notifyDataSetChanged(); } }; private void getOrders(){ try{ m_orders = new ArrayList<Order>(); Order o1 = new Order(); o1.setOrderName("Apple"); o1.setOrderStatus("Buy"); Order o2 = new Order(); o2.setOrderName("Banana"); o2.setOrderStatus("Completed"); m_orders.add(o1); m_orders.add(o2); Thread.sleep(5000); Log.i("ARRAY", ""+ m_orders.size()); } catch (Exception e) { Log.e("BACKGROUND_PROC", e.getMessage()); } runOnUiThread(returnRes); } private class OrderAdapter extends ArrayAdapter<Order> { private ArrayList<Order> items; public OrderAdapter(Context context, int textViewResourceId, ArrayList<Order> items) { super(context, textViewResourceId, items); this.items = items; } @Override public View getView(int position, View convertView, ViewGroup parent) { View v = convertView; if (v == null) { LayoutInflater vi = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE); v = vi.inflate(R.layout.row, null); } Order o = items.get(position); if (o != null) { TextView tt = (TextView) v.findViewById(R.id.toptext); TextView bt = (TextView) v.findViewById(R.id.bottomtext); if (tt != null) { tt.setText("Name: "+o.getOrderName()); } if(bt != null){ bt.setText("Status: "+ o.getOrderStatus()); } } return v; } } }
res\layout\main.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <ListView android:id="@+id/android:list" android:layout_width="fill_parent" android:layout_height="fill_parent" /> <TextView android:id="@+id/android:empty" android:layout_width="fill_parent" android:layout_height="fill_parent" android:text="@string/main_no_items"/> </LinearLayout>
res\layout\row.xml
<?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="?android:attr/listPreferredItemHeight" android:padding="6dip"> <ImageView android:id="@+id/icon" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_marginRight="6dip" android:src="@drawable/icon" /> <LinearLayout android:orientation="vertical" android:layout_width="0dip" android:layout_weight="1" android:layout_height="fill_parent"> <TextView android:id="@+id/toptext" android:layout_width="fill_parent" android:layout_height="0dip" android:layout_weight="1" android:gravity="center_vertical" /> <TextView android:layout_width="fill_parent" android:layout_height="0dip" android:layout_weight="1" android:id="@+id/bottomtext" android:singleLine="true" android:ellipsize="marquee" /> </LinearLayout> </LinearLayout>
res\values\strings.xml
<?xml version="1.0" encoding="utf-8"?> <resources> <string name="hello">Hello World, Tutorial_Listview_CustomListViewItemsAndAdaptersActivity!</string> <string name="app_name">Tutorial_Listview_CustomListViewItemsAndAdapters</string> <string name="main_no_items">No orders to display</string> </resources>
sample code:
please download from here, “Tutorial_Listview_CustomListViewItemsAndAdapters “