Issue #413: removed "compacts" array to always re-layout reused views

This commit is contained in:
Aleksey Tulinov 2013-11-17 06:23:12 +02:00
parent 5626adc574
commit 4f717c663b

View File

@ -20,7 +20,6 @@ abstract public class AppListAdapter extends BaseAdapter {
private List<DB.App> items = new ArrayList<DB.App>(); private List<DB.App> items = new ArrayList<DB.App>();
private Context mContext; private Context mContext;
private List<Boolean> compacts = new ArrayList<Boolean>();
public AppListAdapter(Context context) { public AppListAdapter(Context context) {
mContext = context; mContext = context;
@ -32,12 +31,10 @@ abstract public class AppListAdapter extends BaseAdapter {
public void addItem(DB.App app) { public void addItem(DB.App app) {
items.add(app); items.add(app);
compacts.add(null);
} }
public void clear() { public void clear() {
items.clear(); items.clear();
compacts.clear();
} }
@Override @Override
@ -75,19 +72,15 @@ abstract public class AppListAdapter extends BaseAdapter {
name.setText(app.name); name.setText(app.name);
summary.setText(app.summary); summary.setText(app.summary);
Boolean storedCompact = compacts.get(position); int visibleOnCompact = compact ? View.VISIBLE : View.GONE;
if (storedCompact == null || compact != storedCompact) { int notVisibleOnCompact = compact ? View.GONE : View.VISIBLE;
int visibleOnCompact = compact ? View.VISIBLE : View.GONE;
int notVisibleOnCompact = compact ? View.GONE : View.VISIBLE;
LinearLayout iconContainer = (LinearLayout)convertView.findViewById(R.id.status_icons); LinearLayout iconContainer = (LinearLayout)convertView.findViewById(R.id.status_icons);
iconContainer.setVisibility(visibleOnCompact); iconContainer.setVisibility(visibleOnCompact);
status.setVisibility(notVisibleOnCompact); status.setVisibility(notVisibleOnCompact);
license.setVisibility(notVisibleOnCompact); license.setVisibility(notVisibleOnCompact);
compacts.set(position, compact); layoutSummary(summary);
layoutSummary(summary);
}
ImageLoader.getInstance().displayImage(app.iconUrl, icon); ImageLoader.getInstance().displayImage(app.iconUrl, icon);