The following code shows how to create a ListView with TextView as cell renderer.
res/values/string.xml
<?xml version="1.0" encoding="utf-8"?> <resources> <string name="footer">This is a demo of the ListView. Click and hold on to one of the items above to show the context menu.</string> <string name="app_name">ListViewDemo</string> <string-array name="countries"> <item>Sweden</item> <item>Norway</item> <item>Finland</item> <item>Denmark</item> <item>Germany</item> <item>Poland</item> <item>Netherlands</item> <item>Belgium</item> </string-array> <string-array name="menu"> <item>Edit</item> <item>Delete</item> <item>Send</item> </string-array> </resources>
Main layout file
<?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="fill_parent" android:orientation="vertical" > <ListView android:id="@+id/list" android:layout_width="fill_parent" android:layout_height="0px" android:layout_weight="1" /> <TextView android:id="@+id/footer" android:layout_width="fill_parent" android:layout_height="60dip" android:text="@string/footer" android:padding="4dip" android:background="#FF666666" /> </LinearLayout>
res/layout/listitem.xml
<?xml version="1.0" encoding="utf-8"?> <TextView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" android:textSize="24dip" android:padding="8dip" > </TextView>
Java code
import java.util.Arrays; import android.app.Activity; import android.os.Bundle; import android.view.ContextMenu; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.ContextMenu.ContextMenuInfo; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.ListView; import android.widget.TextView; public class ListViewDemoActivity extends Activity { private String[] Countries; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Countries = getResources().getStringArray(R.array.countries); Arrays.sort(Countries); ListView list = (ListView)findViewById(R.id.list); ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.listitem, Countries); list.setAdapter(adapter); registerForContextMenu(list); } @Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { if (v.getId()==R.id.list) { AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo)menuInfo; menu.setHeaderTitle(Countries[info.position]); String[] menuItems = getResources().getStringArray(R.array.menu); for (int i = 0; i<menuItems.length; i++) { menu.add(Menu.NONE, i, i, menuItems[i]); } } } @Override public boolean onContextItemSelected(MenuItem item) { AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo)item.getMenuInfo(); int menuItemIndex = item.getItemId(); String[] menuItems = getResources().getStringArray(R.array.menu); String menuItemName = menuItems[menuItemIndex]; String listItemName = Countries[info.position]; TextView text = (TextView)findViewById(R.id.footer); text.setText(String.format("Selected %s for item %s", menuItemName, listItemName)); return true; } }