Implement ViewHolder pattern on the GameListAdapter.
This commit is contained in:
parent
eb3de73ab9
commit
53e4f3d73c
|
@ -41,38 +41,55 @@ public final class GameListAdapter extends ArrayAdapter<GameListItem>
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public View getView(int position, View convertView, ViewGroup parent)
|
public View getView(int position, View gameView, ViewGroup parent)
|
||||||
{
|
{
|
||||||
if (convertView == null)
|
ViewHolder holder;
|
||||||
|
|
||||||
|
// If getView() was called without passing in a recycled view,
|
||||||
|
if (gameView == null)
|
||||||
{
|
{
|
||||||
LayoutInflater vi = LayoutInflater.from(context);
|
// Inflate a new view using the appropriate XML layout.
|
||||||
convertView = vi.inflate(id, parent, false);
|
LayoutInflater inflater = LayoutInflater.from(context);
|
||||||
|
gameView = inflater.inflate(id, parent, false);
|
||||||
|
|
||||||
|
// Instantiate a holder to contain references to the game's views.
|
||||||
|
holder = new ViewHolder();
|
||||||
|
holder.title = (TextView) gameView.findViewById(R.id.GameListItemTitle);
|
||||||
|
holder.subtitle = (TextView) gameView.findViewById(R.id.GameListItemSubTitle);
|
||||||
|
holder.icon = (ImageView) gameView.findViewById(R.id.GameListItemIcon);
|
||||||
|
|
||||||
|
// Attach this list of references to the view.
|
||||||
|
gameView.setTag(holder);
|
||||||
|
}
|
||||||
|
// If we do have a recycled view, we can use the references it already contains.
|
||||||
|
else
|
||||||
|
{
|
||||||
|
holder = (ViewHolder) gameView.getTag();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Get a reference to the game represented by this row.
|
||||||
final GameListItem item = getItem(position);
|
final GameListItem item = getItem(position);
|
||||||
|
|
||||||
|
// Whether this row's view is newly created or not, set the children to contain the game's data.
|
||||||
if (item != null)
|
if (item != null)
|
||||||
{
|
{
|
||||||
TextView title = (TextView) convertView.findViewById(R.id.GameListItemTitle);
|
holder.title.setText(item.getName());
|
||||||
TextView subtitle = (TextView) convertView.findViewById(R.id.GameListItemSubTitle);
|
holder.subtitle.setText(item.getData());
|
||||||
ImageView icon = (ImageView) convertView.findViewById(R.id.GameListItemIcon);
|
holder.icon.setImageBitmap(item.getImage());
|
||||||
|
|
||||||
if (title != null)
|
|
||||||
title.setText(item.getName());
|
|
||||||
|
|
||||||
if (subtitle != null)
|
|
||||||
subtitle.setText(item.getData());
|
|
||||||
|
|
||||||
if (icon != null)
|
|
||||||
{
|
|
||||||
icon.setImageBitmap(item.getImage());
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Make every other game in the list grey
|
// Make every other game in the list grey
|
||||||
if (position % 2 == 1)
|
if (position % 2 == 1)
|
||||||
convertView.setBackgroundColor(0xFFE3E3E3);
|
gameView.setBackgroundColor(0xFFE3E3E3);
|
||||||
|
|
||||||
return convertView;
|
return gameView;
|
||||||
|
}
|
||||||
|
|
||||||
|
private final class ViewHolder
|
||||||
|
{
|
||||||
|
public TextView title;
|
||||||
|
public TextView subtitle;
|
||||||
|
public ImageView icon;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue