আমি মনে করি এটি সর্বোত্তম পন্থা। জেনেরিক অ্যারেএডাপ্টার ক্লাস ব্যবহার করা এবং আপনার নিজের অবজেক্ট অ্যাডাপ্টারটি প্রসারিত নীচের মত সহজ:
public abstract class GenericArrayAdapter<T> extends ArrayAdapter<T> {
// Vars
private LayoutInflater mInflater;
public GenericArrayAdapter(Context context, ArrayList<T> objects) {
super(context, 0, objects);
init(context);
}
// Headers
public abstract void drawText(TextView textView, T object);
private void init(Context context) {
this.mInflater = LayoutInflater.from(context);
}
@Override public View getView(int position, View convertView, ViewGroup parent) {
final ViewHolder vh;
if (convertView == null) {
convertView = mInflater.inflate(android.R.layout.simple_list_item_1, parent, false);
vh = new ViewHolder(convertView);
convertView.setTag(vh);
} else {
vh = (ViewHolder) convertView.getTag();
}
drawText(vh.textView, getItem(position));
return convertView;
}
static class ViewHolder {
TextView textView;
private ViewHolder(View rootView) {
textView = (TextView) rootView.findViewById(android.R.id.text1);
}
}
}
এবং এখানে আপনার অ্যাডাপ্টার (উদাহরণস্বরূপ):
public class SizeArrayAdapter extends GenericArrayAdapter<Size> {
public SizeArrayAdapter(Context context, ArrayList<Size> objects) {
super(context, objects);
}
@Override public void drawText(TextView textView, Size object) {
textView.setText(object.getName());
}
}
এবং পরিশেষে, কীভাবে এটি সূচনা করবেন:
ArrayList<Size> sizes = getArguments().getParcelableArrayList(Constants.ARG_PRODUCT_SIZES);
SizeArrayAdapter sizeArrayAdapter = new SizeArrayAdapter(getActivity(), sizes);
listView.setAdapter(sizeArrayAdapter);
আমি টেক্সটভিউ লেআউটের মাধ্যাকর্ষণ কাস্টমাইজযোগ্য অ্যারেএডাপ্টার সহ একটি গিস্ট তৈরি করেছি:
https://gist.github.com/m3n0R/8822803