动态类型的数组列表和自定义适配器

问题描述:

我有类似的5类。每个类都有“代码”,“名称”属性。我使用自定义适配器来列出它们,并且我想为所有人使用1个适配器。这可能吗 ?动态类型的数组列表和自定义适配器

我在那里插件:holder.txtCode.setText(list.get(position).getCode()????); holder.txtName.setText(list.get(position).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; 
    } 

从一类(接口)延伸的所有类,并用碱型/接口的对象的列表中创建适配器:

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; 
}