ListView = ScrollView[ ViewGroup[A View for Each Row] ]
Adapter
an interface whose implementations provide data and the display of that data used by the ListView.
public class TimeTrackerAdapter extends BaseAdapter {
...
}
View getView(int index, View view, ViewGroup parent)
return the view used to display data in the ListView
define time_list_item.xml in /res/layout/
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="vertical"> <TextView android:id="@+id/time_view" android:layout_width="fill_parent" android:layout_height="wrap_content" android:textSize="18dp" android:paddingBottom="5dp" /> <TextView android:id="@+id/note_view" android:layout_width="fill_parent" android:layout_height="wrap_content" android:textSize="12dp" /> </LinearLayout>
Steps to complete getView
1.Instantiate the View
null input view--> initialize
not null --> repopulating
2.Retrieve the data
3.Set values on the view
R.layout.time_list_item
public View getView(int i, View view, ViewGroup viewGroup) { if (view == null) { LayoutInflater inflater = LayoutInflater.from(viewGroup.getContext()); view = inflater.inflate(R.layout.time_list_item, viewGroup, false); } TimeRecord timeRecord = records.get(i); TextView timeTextView = (TextView) view.findViewById(R.id.time_view); timeTextView.setText(timeRecord.getTime()); TextView noteTextView = (TextView) view.findViewById(R.id.note_view); noteTextView.setText(timeRecord.getNote()); return view; }
connect listview with adapter
public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); ListView listView = (ListView) findViewById(R.id.times_list); TimeTrackerAdapter timeTrackerAdapter = new TimeTrackerAdapter(); listView.setAdapter(timeTrackerAdapter); }