У меня аналог 5 класса. У каждого класса «Код», «Имя» свойство. Я использую специальный адаптер для их перечисления, и я хочу использовать 1 адаптер для всех. Это возможно ?
Я втиснул туда: holder.txtCode.setText (list.get (position) .getCode () ????); Holder.txtName.setText (list.get (позиция) .getName () ?????);
public class AdapterCodeName extends BaseAdapter {
private static ArrayList<?> list;
private static ArrayList<?> listOrj;
private static ArrayList<?> mOriginalValues;
private LayoutInflater mInflater;
public AdapterCodeName (Context context, ArrayList<?> results){
list = results;
listOrj = results;
mInflater = LayoutInflater.from(context);
}
@Override
public int getCount() {
return list.size();
}
@Override
public Object getItem(int i) {
return list.get(i);
}
@Override
public long getItemId(int i) {
return i;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if(convertView == null){
convertView = mInflater.inflate(R.layout.row_code_name, null);
holder = new ViewHolder();
holder.txtCode = (TextView) convertView.findViewById(R.id.txtCode);
holder.txtName = (TextView) convertView.findViewById(R.id.txtName);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.txtCode.setText(list.get(position).getCode() ????);
holder.txtName.setText(list.get(position).getName() ?????);
return convertView;
}
static class ViewHolder{
TextView txtCode,txtName;
}
1 ответ
Расширить все классы из одного класса (интерфейса) и создать адаптер со списком объектов базового типа / интерфейса:
public interface Item {
String getName();
String getCode();
}
public class ListItem1 implements Item {
private String name;
private String code;
@Override
public getName() {
return name;
}
@Override
public getCode() {
return code;
}
}
public class ListItem2 implements Item {
private String name;
private String code;
private String somethingElse;
@Override
public getName() {
return name;
}
@Override
public getCode() {
return code;
}
}
В адаптере:
private static ArrayList<? extends Item> list;
@Override
public Item getItem(int i) {
return list.get(i);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
...
holder.txtCode.setText(list.get(position).getCode());
holder.txtName.setText(list.get(position).getName());
return convertView;
}
Похожие вопросы
Новые вопросы
android
Android — это мобильная операционная система Google, используемая для программирования или разработки цифровых устройств (смартфонов, планшетов, автомобилей, телевизоров, одежды, очков, IoT). Для тем, связанных с Android, используйте теги, специфичные для Android, такие как android-intent, android-activity, android-adapter и т. д. Для вопросов, отличных от разработки или программирования, но связанных с Android framework, используйте эту ссылку: https://android .stackexchange.com.