Androidフレームワークのより簡易なArrayAdapter
2751 ワード
BaseAdapterはAndroid開発で使用頻度が高いListViewのベースAdapterであり、さらにAndroid公式にもう一つのArrayAdapterが提供されており、その名前を見るとリストセットを封入した簡易Adapterであることがわかる.Adapterは常にViewHolderと組み合わせて使用されており、すでに生成されたViewを効率的に多重化することができます.ArrayAdapterは便利ですが、開発中は常にViewHolderに接続されたコードを作成しなければなりません.怠惰は開発者の天性なので、ここで抽象化し、ArrayAdapterをより便利にします.
乾物Gistここを注文java
MagicViewHolder.java
使用例:
コードは簡単です.きっと一目でわかると思います.
読者の皆さん、ありがとうございます.好きなら「いいね」を押してください.どこか分からないことがあったら、下にメッセージを残してもいいです.:)
転載は本文の住所を添付してください
乾物Gistここを注文java
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 extends ArrayAdapter {
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 h;
if (convertView == null) {
convertView = mInflater.inflate(mResource, parent, false);
h = getViewHolder(position, convertView, parent);
convertView.setTag(h);
} else {
h = (MagicViewHolder) convertView.getTag();
}
h.populateView(position, convertView, parent, getItem(position));
return convertView;
}
abstract public MagicViewHolder getViewHolder(int position, View convertView, ViewGroup parent);
}
MagicViewHolder.java
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
/**
* @author solo
*/
public abstract class MagicViewHolder {
public MagicViewHolder(View view) {
}
/**
* AdapterView item
*/
abstract public void populateView(int position, View convertView, ViewGroup parent, T item);
}
使用例:
// Adapter
class YourAdapter extends MagicArrayAdapter {
public YourAdapter(Context context) {
super(context, R.layout.your_layout);
}
@Override
public MagicViewHolder< YourEntity > getViewHolder(int position, View convertView, ViewGroup parent) {
return new ViewHolder(convertView, this);
}
}
// ViewHolder
static class ViewHolder extends MagicViewHolder {
public ViewHolder(View view) {
// hold your view
}
@Override
public void populateView(int position, View convertView, ViewGroup parent, YourEntity item) {
// do something
}
}
コードは簡単です.きっと一目でわかると思います.
読者の皆さん、ありがとうございます.好きなら「いいね」を押してください.どこか分からないことがあったら、下にメッセージを残してもいいです.:)
転載は本文の住所を添付してください