在android中将默认文本设置为spinner视图

时间:2015-01-08 07:08:22

标签: android spinner

我正在开发Android应用程序,其中我使用了两个微调器视图。我从Web服务获取数据并将其存储在两个列表数组中,这两个列表数组分别分配给spinner视图,但我必须为其分配一些默认值在分配列表数组之前,微调器视图分别像“选择类别”和“选择子类别”。那么如何实现呢?请帮帮我。

提前致谢...

3 个答案:

答案 0 :(得分:3)

使用ArrayList代替数组。在从webservices添加值之前,首先将默认值添加到数组列表中。

您可以使用如下。

ArraList<String> list=new ArrayList<String>();
list.add("Select Category");

//Your logic to get data from web services

//Add the data to array list.

list.add("data1");
list.add("data2");

希望这有帮助。

答案 1 :(得分:1)

试试这个solution。它有26个答案和许多不同的技术,可以完成你想完成的任务。

答案 2 :(得分:0)

您可以使用此代码。

String defaultTextForSpinner = "Select Category";
Spinner spinnerCategory = (Spinner)
            .findViewById(R.id.spinner2);

之后,您需要为custom adapter

制作spinner
CategoryAdapter cat_adapter = new CategoryAdapter(this, categoryList,
                    R.layout.spinner_row, defaultTextForSpinner);
spinnerCategory.setAdapter(cat_adapter);
cat_adapter.notifyDataSetChanged();

适配器类:

public class CategoryAdapter extends ArrayAdapter<String> {

Activity context;
ArrayList<HashMap<String, String>> categoryList;
String firstElement;
boolean isFirstTime;
LayoutInflater mInflater;
String[] objects;

public CategoryAdapter(FragmentActivity context,
        ArrayList<HashMap<String, String>> categoryList, int spinnerRow,
        String defaultTextForSpinner) {

    super(context, spinnerRow);
    this.context = context;
    this.categoryList = categoryList;
    this.constant = new Const(context);
    mInflater = LayoutInflater.from(context);
    objects = new String[this.categoryList.size()];
    setDefaultText(defaultTextForSpinner);


}

@Override
public View getDropDownView(int position, View convertView, ViewGroup parent) {
    for (int i = 0; i < categoryList.size(); i++) {
        objects[i] = categoryList.get(i).get("category_name");
    }
    if (isFirstTime) {
        objects[0] = firstElement;
        isFirstTime = false;
    }
    return getCustomView(position, convertView, parent);
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    notifyDataSetChanged();
    return getCustomView(position, convertView, parent);
}

public void setDefaultText(String defaultText) {
    this.firstElement = objects[0];
    objects[0] = defaultText;
}

public View getCustomView(int position, View convertView, ViewGroup parent) {

    LayoutInflater inflater = (LayoutInflater) context
            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View row = inflater.inflate(R.layout.spinner_row, parent, false);
    TextView label = (TextView) row.findViewById(R.id.txtSpinner);
    label.setText(objects[position]);

    return row;
}

@Override
public int getCount() { // TODO Auto-generated method stub
    return objects.length;
}

}