Hallo liebes Forum,
ich habe ein Problem mit meiner ListView und meinem dazugehörigen Adapter.
Ich habe eine List mit x Objekten darin, die in meiner ListView dargestellt werden sollen.
Dafür habe ich einen Adapter, der von BaseAdapter erbt.
Das Problem ist nun aber, dass die Methode getView() davon nicht aufgerufen wird, weshalb mir keine Liste angezeigt wird.
Meine Vermutung liegt nun beim Context, allerdings sind mir da die Ideen ausgegangen.
Ich übergebe dem Adapter die Activity, in der die ListView angezeigt werden soll.
Sozusagen: context = this;
Der Constructor vom Adapter wird aufgerufen.
Vielleicht hat ja hier jemand die zündende Idee, die mir grade fehlt!
Code:
ich habe ein Problem mit meiner ListView und meinem dazugehörigen Adapter.
Ich habe eine List mit x Objekten darin, die in meiner ListView dargestellt werden sollen.
Dafür habe ich einen Adapter, der von BaseAdapter erbt.
Das Problem ist nun aber, dass die Methode getView() davon nicht aufgerufen wird, weshalb mir keine Liste angezeigt wird.
Meine Vermutung liegt nun beim Context, allerdings sind mir da die Ideen ausgegangen.
Ich übergebe dem Adapter die Activity, in der die ListView angezeigt werden soll.
Sozusagen: context = this;
Der Constructor vom Adapter wird aufgerufen.
Vielleicht hat ja hier jemand die zündende Idee, die mir grade fehlt!
Code:
Java:
dailyReports = new ArrayList<>();
arrayAdapter = new DailyReportsAdapter(this);
listView = (ListView) findViewById(R.id.listViewDailyReports);
listView.setClickable(true);
loadReportsFromDB();
listView.setAdapter(arrayAdapter);
Java:
private class DailyReportsAdapter extends BaseAdapter {
private List<DailyReport> dailyReports = Collections.emptyList();
private final Context context;
public DailyReportsAdapter(Context context) {
this.context = context;
}
public void updateDailyReports(List<DailyReport> dailyReports) {
this.dailyReports = dailyReports;
notifyDataSetChanged();
}
@Override
public int getCount() {
return dailyReports.size();
}
@Override
public Object getItem(int position) {
return dailyReports.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
TextView rowTvDate;
TextView rowTvActivity;
if (convertView == null) {
convertView = LayoutInflater.from(context).inflate(R.layout.row_item_layout_daily_report, parent, false);
rowTvDate = (TextView) convertView.findViewById(R.id.rowTvDate);
rowTvActivity = (TextView) convertView.findViewById(R.id.rowTvActivity);
convertView.setTag(new ViewHolder(rowTvDate, rowTvActivity));
} else {
ViewHolder viewHolder = (ViewHolder) convertView.getTag();
rowTvDate = viewHolder.getRowTvDate();
rowTvActivity = viewHolder.getRowTvActivity();
}
DailyReport currentDailyReport = (DailyReport) getItem(position);
if (rowTvDate != null) {
rowTvDate.setText(currentDailyReport.getDate());
}
if (rowTvActivity != null) {
rowTvActivity.setText(currentDailyReport.getActivity());
}
return convertView;
}
}