我在设置微调器选择时遇到问题。这是我在做的事情: 我有一个XML,其中有一个按钮和一个填充了国家/地区名称的微调器。我没有使用适配器填充微调器,而是在values文件夹中的字符串文件中命名了一个数组,该文件夹有很多项目作为国家/地区名称。现在选择一个国家,我可以选择英格兰,然后点击按钮。点击一个新活动就是开始,它也有一个微调器,它以相同的方式填充相同的列表。但我想要的是第二个活动微调器应该显示所选的国家,在这种情况下是英格兰作为旋转器中的当前项目。 但我无法解决它。 这是我所做的一段代码
//第一个活动XML
<Spinner
android:id="@+id/spinner1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:entries="@array/sehirler"
android:prompt="@string/sehirsec" />
//第二个活动XML
<Spinner
android:id="@+id/spinner2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:entries="@array/sehirler"
android:prompt="@string/sehirsec" />
//第一活动代码
spinner = (Spinner)findViewById(R.id.spinner1);
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
spinnerItem = spinner .getSelectedItem().toString();
Intent intent = new Intent(firstactivity.this, secondactivty.class);
intent.putExtra("name", spinnerItem);
startActivity(intent);
}
});
//第二个活动代码
sehir = (Spinner)findViewById(R.id.spinner2);
Intent intent = getIntent();
String name2 = intent.getExtras().getString("name");
sehir.setSelection(getIndex(sehir, name2));
private int getIndex(Spinner spinner, String myString) {
int index = 0;
for (int i=0;i<spinner.getCount();i++) {
if (spinner.getItemAtPosition(i).equals(myString)) {
index = i;
}
}
return index;
}
}
答案 0 :(得分:1)
您的spinner2似乎不在第二个活动中,而是在完全不同的布局中。检查并查看是否有适配器。如果您有自定义适配器,则必须将该位置值传递给自定义适配器的构造函数。
在第二个活动中,将位置值传递给CustomAdapter构造函数:
Intent intent = getIntent();
position = intent.getIntExtra("position", 0);
CustomAdapter jsonCustomAdapter = new CustomAdapter(SecondActivity.this, list, position);
在CustomAdapter中,将其设置如下:
public class CustomAdapter extends BaseAdapter {
private LayoutInflater inflater;
private List<ItemObject> list;
private int spinnerPosition;
public CustomAdapter(Context context, List<ItemObject> list, int position) {
inflater =(LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
this.list = list;
spinnerPosition = position;
}
@Override
public int getCount() {
return list.size();
}
@Override
public Object getItem(int position) {
return position;
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder listViewHolder;
if(convertView == null){
listViewHolder = new ViewHolder();
convertView = inflater.inflate(R.layout.list, parent, false);
listViewHolder.spinner = (Spinner)convertView.findViewById(R.id.spinner2);
convertView.setTag(listViewHolder);
} else {
listViewHolder = (ViewHolder)convertView.getTag();
}
listViewHolder.spinner.setSelection(spinnerPosition);
return convertView;
}
static class ViewHolder{
Spinner spinner;
}
}