My Custome ArrayAdapter: This does what it is supposed to do but only shows the last record of the particular table. I need it to show all of the records
public class RecordAdapter extends ArrayAdapter<RecordData> {
Context context;
int layoutResourceId;
RecordData data[] = null;
private LayoutInflater inflater;
public RecordAdapter(Context context, int layoutResourceId, RecordData[] data) {
super(context, layoutResourceId, data);
inflater = LayoutInflater.from(context);
this.layoutResourceId = layoutResourceId;
this.context = context;
this.data = data;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View row = convertView;
RecordHolder holder = null;
if (row == null) {
LayoutInflater inflater = ((Activity) context).getLayoutInflater();
row = inflater.inflate(layoutResourceId, parent, false);
holder = new RecordHolder();
holder.txtDate = (TextView) row.findViewById(R.id.txtDate);
row.setTag(holder);
} else {
holder = (RecordHolder) row.getTag();
}
RecordData record_item = data[position];
holder.txtDate.setText(record_item.recDate);
return row;
}
static class RecordHolder {
TextView txtDate;
}
}
My OnClickListener:
String dateToSee = mDisplayDate.getText().toString().trim();
MyRecordsDatabaseHandler db = new MyRecordsDatabaseHandler(this);
// Querying all items
List<RecordToDoActivity> items = db.getRecord(dateToSee);
for (RecordToDoActivity ti : items) {
for (int i = 0; i <= items.size(); i++) {
display_record_dateEditText.setText(ti.getDate());
display_record_timeEditText.setText(ti.getTime());
display_record_glucoseEditText.setText(ti.getReading());
display_record_glucoseTimeEditText.setText(ti.getReadtime());
display_record_mealTimeEditText.setText(ti.getMealTime());
display_record_medsEditText.setText(ti.getMeds());
//display_record_insulin_unit_text.setText(ti.get());
display_record_moodEditText.setText(ti.getMood());
display_record_weatherEditText.setText(ti.getWeather());
display_record_notesEditText.setText(ti.getNote()
);
}
}
if (!display_record_dateEditText.getText().toString().trim().equals("")&&
!display_record_timeEditText.getText().toString().trim().equals("")&&
!display_record_glucoseEditText.getText().toString().trim().equals("")&&
!display_record_glucoseTimeEditText.getText().toString().trim().equals("")&&
!display_record_mealTimeEditText.getText().toString().trim().equals("")&&
!display_record_medsEditText.getText().toString().trim().equals("")&&
!display_record_moodEditText.getText().toString().trim().equals("")&&
!display_record_weatherEditText.getText().toString().trim().equals("")&&
!display_record_notesEditText.getText().toString().trim().equals("") ) {
RecordData record_data[] = new RecordData[] {
new RecordData("Date: "+display_record_dateEditText.getText().toString().trim()+ "\n"+
"Time: "+display_record_timeEditText.getText().toString().trim()+ "\n"+
"Reading: "+display_record_glucoseEditText.getText().toString().trim()+ "\n"+
"Reading Time: "+display_record_glucoseTimeEditText.getText().toString().trim()+ "\n"+
"Meal: "+display_record_mealTimeEditText.getText().toString().trim()+ "\n"+
"Medication: "+display_record_medsEditText.getText().toString().trim()+ "\n"+
"Mood: "+display_record_moodEditText.getText().toString().trim()+ "\n"+
"Weather: "+display_record_weatherEditText.getText().toString().trim()+ "\n"+
"Notes: "+display_record_notesEditText.getText().toString().trim()),
};
RecordAdapter adapter = new RecordAdapter(this,
R.layout.listview_record_row, record_data);
listView1 = (ListView) findViewById(R.id.listView1);
listView1.setAdapter(adapter);
}//end ITEM_ONE if statement
I have tried each of the item individually and they are all displaying data. But I cannot figure out how to get it to display all of the records into the One list view
The ListView is a normal ListView encapsulated in a LinearLayout:
Help.... Im really stuck on this. Thanks
You're receiving you data from a DB, so you should use a SimpleCursorAdapter or implement you own CursorAdapter.
This answer probably will solve your problem.