Android,如何在arrayAdapter类中定义参数

时间:2014-06-14 08:10:01

标签: android adapter

这是一个简单的问题,我有一个独立的类用于调整我的listView,我想在这个类中设置一个参数,在我的Activity里面调整它的列表:

PageItemsInflater.java

public class PageItemsInflater extends ArrayAdapter<String>{

int _TYPE = 1; //this parameter

TextView tvno, tvcount, tvPrice;
Context c;

public PageItemsInflater(Context context, int resource,
        int textViewResourceId, List<String> objects) {
    super(context, resource, textViewResourceId, objects);
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    LayoutInflater inflater = new LayoutInflater(c) {
        @Override
        public LayoutInflater cloneInContext(Context newContext) {
            return null;
        }
    };
    convertView = inflater.inflate(R.layout.pages_items_list, null);
    tvno = (TextView) convertView.findViewById(R.id.tv_no);
    tvcount = (TextView) convertView.findViewById(R.id.tv_no_count);
    if(_TYPE == 1){
        //TODO
    }else{
        //TODO
    }

    return convertView;
}

}

我说的参数是 _TYPE 我想在FirstActivity设置 _TYPE = 1 ,我的意思是我想改变我的活动中的_TYPE为每个活动设置特殊文本。在Activity中我调用我的适配器:

lv.setAdapter(new PageItemsInflater(getApplicationContext(), R.layout.pages_items_list, R.id.tv_no, names));

我不想使用 SharedPreferences

2 个答案:

答案 0 :(得分:0)

您可以覆盖构造函数并将TYPE传递给适配器。

public PageItemsInflater(Context context, int resource,
    int textViewResourceId, List<String> objects, int type) {
    super(context, resource, textViewResourceId, objects);
    //do something with the type
}

然后自己初始化inflater。如果您想要更灵活,请切换BaseAdapter以获得更大的灵活性。

答案 1 :(得分:0)

您可以像这样修改适配器类的构造函数

public PageItemsInflater(Context context, int resource,
      int textViewResourceId, List<String> objects, int type) {
    super(context, resource, textViewResourceId, objects);
}

然后将此适配器设置为列表视图,如下所示

lv.setAdapter(new PageItemsInflater(getApplicationContext(), R.layout.pages_items_list,   R.id.tv_no, names,-1));