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