commit 7f74cf334317960ba2d349f95531f037e43fba96
parent f3f06670aeed9b141ee1c572cd74a859f289cb11
Author: Jan Dankert <devnull@localhost>
Date: Tue, 24 Jan 2012 21:05:57 +0100
View wiederverwenden...
Diffstat:
2 files changed, 90 insertions(+), 44 deletions(-)
diff --git a/src/de/mtbnews/android/adapter/ListEntryContentAdapter.java b/src/de/mtbnews/android/adapter/ListEntryContentAdapter.java
@@ -15,6 +15,7 @@ import android.widget.BaseAdapter;
import android.widget.LinearLayout;
import android.widget.TextView;
import de.mtbnews.android.R;
+import de.mtbnews.android.adapter.MapContentAdapter.ViewHolder;
import de.mtbnews.android.tapatalk.wrapper.ListEntry;
/**
@@ -35,7 +36,8 @@ public class ListEntryContentAdapter extends BaseAdapter
private List<? extends ListEntry> list;
- public ListEntryContentAdapter(Context context, List<? extends ListEntry> list)
+ public ListEntryContentAdapter(Context context,
+ List<? extends ListEntry> list)
{
mContext = context;
inflator = (LayoutInflater) context
@@ -68,43 +70,63 @@ public class ListEntryContentAdapter extends BaseAdapter
public View getView(int position, View convertView, ViewGroup parent)
{
- ListEntry e = list.get(position);
+ final ListEntry e = list.get(position);
+ final ViewHolder viewHolder;
- final View view = inflator.inflate(R.layout.rss_item, null);
-
- // Linken Rand ggf. erhöhen.
- // LinearLayout.LayoutParams params2 = new LinearLayout.LayoutParams(
- // LinearLayout.LayoutParams.FILL_PARENT,
- // LinearLayout.LayoutParams.WRAP_CONTENT);
- // params2.setMargins(20,0,0,0);
- // view.setLayoutParams(params2);
+ if (convertView == null)
+ {
+ convertView = inflator.inflate(R.layout.rss_item, null);
+
+ // Linken Rand ggf. erhöhen.
+ // LinearLayout.LayoutParams params2 = new
+ // LinearLayout.LayoutParams(
+ // LinearLayout.LayoutParams.FILL_PARENT,
+ // LinearLayout.LayoutParams.WRAP_CONTENT);
+ // params2.setMargins(20,0,0,0);
+ // view.setLayoutParams(params2);
+
+ viewHolder = new ViewHolder();
+
+ viewHolder.datum = (TextView) convertView
+ .findViewById(R.id.item_date);
+ viewHolder.name = (TextView) convertView
+ .findViewById(R.id.item_title);
+ viewHolder.desc = (TextView) convertView
+ .findViewById(R.id.item_description);
+ convertView.setTag(viewHolder);
+ }
+ else
+ {
+ viewHolder = (ViewHolder) convertView.getTag();
+ }
- TextView datum = (TextView) view.findViewById(R.id.item_date);
if (e.getDate() != null)
- {
- datum.setText(DateFormat.getDateFormat(parent.getContext()).format(
- e.getDate())
+ viewHolder.datum.setText(DateFormat.getDateFormat(
+ parent.getContext()).format(e.getDate())
+ " "
+ DateFormat.getTimeFormat(parent.getContext()).format(
e.getDate()));
- }
else
- {
- datum.setEnabled(false);
- }
+ viewHolder.datum.setEnabled(false);
if (e.getTitle() != null)
- {
- TextView name = (TextView) view.findViewById(R.id.item_title);
- name.setText(e.getTitle());
- }
+ viewHolder.name.setText(e.getTitle());
+ else
+ viewHolder.name.setEnabled(false);
if (e.getContent() != null)
- {
- TextView desc = (TextView) view.findViewById(R.id.item_description);
- desc.setText(e.getContent());
- }
+ viewHolder.desc.setText(e.getContent());
+ else
+ viewHolder.desc.setText("");
- return view;
+ return convertView;
}
+
+ static class ViewHolder
+ {
+ TextView datum;
+ TextView name;
+ TextView desc;
+ }
+
}
diff --git a/src/de/mtbnews/android/adapter/MapContentAdapter.java b/src/de/mtbnews/android/adapter/MapContentAdapter.java
@@ -77,46 +77,70 @@ public class MapContentAdapter extends BaseAdapter
Map<String, Object> e = map.get(position);
- final View view = inflator.inflate(R.layout.rss_item, null);
+ final ViewHolder viewHolder;
- // Linken Rand ggf. erhöhen.
- // LinearLayout.LayoutParams params2 = new LinearLayout.LayoutParams(
- // LinearLayout.LayoutParams.FILL_PARENT,
- // LinearLayout.LayoutParams.WRAP_CONTENT);
- // params2.setMargins(20,0,0,0);
- // view.setLayoutParams(params2);
+ if (convertView == null)
+ {
+
+ convertView = inflator.inflate(R.layout.rss_item, null);
+
+ // Linken Rand ggf. erhöhen.
+ // LinearLayout.LayoutParams params2 = new
+ // LinearLayout.LayoutParams(
+ // LinearLayout.LayoutParams.FILL_PARENT,
+ // LinearLayout.LayoutParams.WRAP_CONTENT);
+ // params2.setMargins(20,0,0,0);
+ // view.setLayoutParams(params2);
+
+ viewHolder = new ViewHolder();
+ viewHolder.datum = (TextView) convertView
+ .findViewById(R.id.item_date);
+ viewHolder.name = (TextView) convertView
+ .findViewById(R.id.item_title);
+ viewHolder.desc = (TextView) convertView
+ .findViewById(R.id.item_description);
+ convertView.setTag(viewHolder);
+ }
+ else
+ {
+ viewHolder = (ViewHolder) convertView.getTag();
+ }
- TextView datum = (TextView) view.findViewById(R.id.item_date);
if (dateKey != null)
{
- datum.setText(DateFormat.getDateFormat(parent.getContext()).format(
- e.get(dateKey))
+ viewHolder.datum.setText(DateFormat.getDateFormat(
+ parent.getContext()).format(e.get(dateKey))
+ " "
+ DateFormat.getTimeFormat(parent.getContext()).format(
e.get(dateKey)));
}
else
{
- datum.setEnabled(false);
+ viewHolder.datum.setEnabled(false);
}
if (titleKey != null)
{
- TextView name = (TextView) view.findViewById(R.id.item_title);
- name.setText(new String((byte[]) e.get(titleKey)));
+ viewHolder.name.setText(new String((byte[]) e.get(titleKey)));
}
if (descriptionKey != null)
{
- TextView desc = (TextView) view.findViewById(R.id.item_description);
if (e.get(descriptionKey) != null)
- desc.setText(new String((byte[]) e.get(descriptionKey)));
+ viewHolder.desc.setText(new String((byte[]) e.get(descriptionKey)));
else
- desc.setText("");
+ viewHolder.desc.setText("");
}
- return view;
+ return convertView;
+ }
+
+ static class ViewHolder
+ {
+ TextView datum;
+ TextView name;
+ TextView desc;
}
}