Skip to content

Instantly share code, notes, and snippets.

@kjsolo
Last active November 27, 2015 08:29
Show Gist options
  • Save kjsolo/40307d6c9df12adc6617 to your computer and use it in GitHub Desktop.
Save kjsolo/40307d6c9df12adc6617 to your computer and use it in GitHub Desktop.
Android,抽象ArrayAdapter与ViewHolder之间的代码
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
/**
* @author solo
*/
public abstract class MagicArrayAdapter<T> extends ArrayAdapter<T> {
private final LayoutInflater mInflater;
private final int mResource;
public MagicArrayAdapter(Context context, int resource) {
super(context, resource);
mResource = resource;
mInflater = LayoutInflater.from(context);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
MagicViewHolder<T> h;
if (convertView == null) {
convertView = mInflater.inflate(mResource, parent, false);
h = getViewHolder(position, convertView, parent);
convertView.setTag(h);
} else {
h = (MagicViewHolder<T>) convertView.getTag();
}
h.populateView(position, convertView, parent, getItem(position));
return convertView;
}
abstract public MagicViewHolder<T> getViewHolder(int position, View convertView, ViewGroup parent);
}
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
/**
* @author solo
*/
public abstract class MagicViewHolder<T> {
public MagicViewHolder(View view) {
}
/**
* 更新AdapterView的每个item
*/
abstract public void populateView(int position, View convertView, ViewGroup parent, T item);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment