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);
}