gpt4 book ai didi

java - 选择状态后使用 notifyDataSetChanged 更新 City Spinner

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:49:26 26 4
gpt4 key购买 nike

如何在用户选择州后更新我的城市微调器?

这两个字段都使用返回 JSON 数据并将信息解析为微调器数组的 DataCall.class 填充。

我下面的代码将城市适配器设置为默认“选择状态”值,一旦用户选择了状态,它应该使用notifyDataSetChanged,因为默认数组城市微调器会更新为新的城市名称。我收到的错误在下面的代码中进行了注释。

public class SearchActivity extends Activity{
private static final String TAG = "MyApp";
ArrayAdapter<String> adapter2;
String city_values[] = new String[]{"Please select a state."};

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.search_layout);

final Spinner zipspinner = (Spinner) findViewById(R.id.zipspinner);
final Spinner cityspinner = (Spinner) findViewById(R.id.cityspinner);

adapter2 = new ArrayAdapter<String> (this,android.R.layout.simple_spinner_item, city_values);
adapter2.setDropDownViewResource(R.layout.city_spinner_layout);
cityspinner.setAdapter(adapter2);

JSONArray jsonArray;
try {
String spinnerContentType = "state";
String spinnerURL = "getStoreState.php";
String spinner_data = DataCall.getJSON(spinnerURL,spinnerContentType);
Log.d(TAG, spinner_data);
jsonArray = new JSONArray(spinner_data);

final String[] array_spinner = new String[jsonArray.length()];
for (int i=0; i<jsonArray.length(); i++) {
String styleValue = jsonArray.getJSONArray(i).getString(0);
Log.d(TAG, styleValue);
array_spinner[i] = styleValue;
}

ArrayAdapter<String> adapter = new ArrayAdapter<String> (this,
android.R.layout.simple_spinner_item,array_spinner);
adapter.setDropDownViewResource(R.layout.state_spinner_layout);
zipspinner.setAdapter(adapter);
zipspinner.setOnItemSelectedListener(new OnItemSelectedListener() {
public void onItemSelected(AdapterView<?> parent,View view, int pos, long id) {
int item = zipspinner.getSelectedItemPosition();
if(item != 0){

String item_value = array_spinner[item];
String spinnerContentType = "city";
String spinnerURL = "getStoreCity.php?state=" + item_value;
Log.d(TAG, spinnerURL);
String city_data = DataCall.getJSON(spinnerURL,spinnerContentType);
Log.d(TAG, city_data);

JSONArray cityArray = null;
try {
cityArray = new JSONArray(city_data);
} catch (JSONException e) {
e.printStackTrace();
}
final String[] city_spinner = new String[cityArray.length()];

for (int i=0; i<cityArray.length(); i++){
String styleValue = null;
try {
styleValue = cityArray.getJSONArray(i).getString(0);
Log.d(TAG, styleValue);
} catch (JSONException e) {
e.printStackTrace();
}
city_spinner[i] = styleValue;
}

city_values = city_spinner;
adapter2.notifyDataSetChanged();

String test_string = "NOTIFY UPDATE";
Log.d(TAG, test_string);
} else {
// finish();
}
}
public void onNothingSelected(AdapterView parent) {
// Do nothing.
}
});

cityspinner.setOnItemSelectedListener(new OnItemSelectedListener() {
public void onItemSelected(AdapterView<?> parent,View view, int pos, long id) {
int item = zipspinner.getSelectedItemPosition();
if(item != 0){

}else{

}

}

public void onNothingSelected(AdapterView parent) {
// Do nothing.
}
});
}catch (JSONException e) {
e.printStackTrace();
}
}
}

最佳答案

好吧,这就是我的建议,

首先检查您是否在 city_values 中获取值.然后,通知适配器.... adapter2.notifyDataSetChanged();最后 cityspinner.setSelection(0);

UPDATE:

我建议去 ArrayList<String> instead of String[]

谢谢...

关于java - 选择状态后使用 notifyDataSetChanged 更新 City Spinner,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7370107/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com