Java 选择其他父微调器时,微调器项未设置为默认值
我是android编程的新手。这可能是个愚蠢的问题。 我做了两个旋转器项目。选择第一个微调器时,第一次不会刷新第二个微调器项目视图。但第二个微调器的内容显示正确Java 选择其他父微调器时,微调器项未设置为默认值,java,android,android-studio,android-layout,Java,Android,Android Studio,Android Layout,我是android编程的新手。这可能是个愚蠢的问题。 我做了两个旋转器项目。选择第一个微调器时,第一次不会刷新第二个微调器项目视图。但第二个微调器的内容显示正确 public class SpinnerActivity extends AppCompatActivity { Spinner spinner,spinner1; TextView textView; String jsonString=null; JSONObject jsonObject;
public class SpinnerActivity extends AppCompatActivity {
Spinner spinner,spinner1;
TextView textView;
String jsonString=null;
JSONObject jsonObject;
ArrayList<String> countries;
ArrayList<String> cities;
ArrayAdapter arrayAdapter;
ArrayAdapter arrayAdapter1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_spinner);
textView=findViewById(R.id.textView5);
spinner=findViewById(R.id.spinner);
spinner1=findViewById(R.id.spinner1);
countries=new ArrayList<>();
cities=new ArrayList<>();
jsonString=getStringFromJsonFile();
arrayAdapter=getCountryFromJson();
spinner.setAdapter(arrayAdapter);
spinner.setPrompt("Select Country");
arrayAdapter1=getCityFromCountry("Afghanistan");
spinner1.setAdapter(arrayAdapter1);
spinner1.setPrompt("Select City");
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
arrayAdapter1=getCityFromCountry(countries.get(position));
textView.setText(cities.get(0));
arrayAdapter.notifyDataSetChanged();
arrayAdapter1.notifyDataSetChanged();
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
spinner1.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
textView.setText(cities.get(position));
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
}
public ArrayAdapter getCityFromCountry(String s) {
try {
cities.clear();
JSONArray cityJR=jsonObject.getJSONArray(s);
for(int i=0;i<cityJR.length();i++)
{
cities.add(cityJR.get(i).toString());
}
Collections.sort(cities);
} catch (JSONException e) {
e.printStackTrace();
}
return new ArrayAdapter<>(this, android.R.layout.simple_spinner_dropdown_item, cities);
}
@Override
public void onBackPressed() {
super.onBackPressed();
overridePendingTransition(R.anim.slide_from_left,R.anim.slide_to_right);
}
public String getStringFromJsonFile(){
try {
InputStream jsonIpStream=getApplicationContext().getAssets().open("countries.txt");
byte[] bytes = new byte[1000];
StringBuilder x = new StringBuilder();
int numRead = 0;
while ((numRead = jsonIpStream.read(bytes)) >= 0) {
x.append(new String(bytes, 0, numRead));
}
return x.toString();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
public ArrayAdapter getCountryFromJson(){
try {
countries.clear();
jsonObject=new JSONObject(jsonString);
JSONArray countryJR=jsonObject.names();
for(int i = 0; i<countryJR.length(); i++)
{
countries.add(countryJR.get(i).toString());
}
Collections.sort(countries);
} catch (JSONException e) {
e.printStackTrace();
}
return new ArrayAdapter<>(this, android.R.layout.simple_spinner_dropdown_item, countries);
}
}
公共类SpinneActivity扩展了AppCompatActivity{
纺纱机纺纱机,纺纱机1;
文本视图文本视图;
字符串jsonString=null;
JSONObject JSONObject;
阿拉伯国家;
阵列式城市;
ArrayAdapter ArrayAdapter;
ArrayAdapter ArrayAdapter 1;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u微调器);
textView=findViewById(R.id.textView5);
微调器=findViewById(R.id.spinner);
喷丝头1=findViewById(R.id.喷丝头1);
国家/地区=新阵列列表();
城市=新阵列列表();
jsonString=getStringFromJsonFile();
arrayAdapter=getCountryFromJson();
spinner.setAdapter(阵列适配器);
spinner.setPrompt(“选择国家”);
arrayAdapter1=从国家(“阿富汗”);
喷丝头1.设置适配器(阵列适配器1);
喷丝头1.设置提示(“选择城市”);
spinner.setOnItemSelectedListener(新的AdapterView.OnItemSelectedListener(){
@凌驾
已选择公共视图(AdapterView父视图、视图视图、整型位置、长id){
arrayAdapter1=getCityFromCountry(countries.get(position));
textView.setText(cities.get(0));
arrayAdapter.notifyDataSetChanged();
arrayAdapter1.notifyDataSetChanged();
}
@凌驾
未选择公共无效(AdapterView父级){
}
});
spinner1.setOnItemSelectedListener(新AdapterView.OnItemSelectedListener()){
@凌驾
已选择公共视图(AdapterView父视图、视图视图、整型位置、长id){
textView.setText(cities.get(position));
}
@凌驾
未选择公共无效(AdapterView父级){
}
});
}
公共阵列适配器getCityFromCountry(字符串s){
试一试{
城市。清除();
JSONArray cityJR=jsonObject.getJSONArray;
对于(int i=0;i=0){
x、 追加(新字符串(字节,0,numRead));
}
返回x.toString();
}捕获(IOE异常){
e、 printStackTrace();
}
返回null;
}
公共阵列适配器getCountryFromJson(){
试一试{
国家。清除();
jsonObject=新的jsonObject(jsonString);
JSONArray countryJR=jsonObject.names();
对于以下代码中的(int i=0;i:
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
arrayAdapter1=getCityFromCountry(countries.get(position));
textView.setText(cities.get(0));
arrayAdapter.notifyDataSetChanged();
arrayAdapter1.notifyDataSetChanged();
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
与
在以下代码中:
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
arrayAdapter1=getCityFromCountry(countries.get(position));
textView.setText(cities.get(0));
arrayAdapter.notifyDataSetChanged();
arrayAdapter1.notifyDataSetChanged();
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
与
天啊,工作了,太多了!天啊,工作了,太多了!
spinner1.setAdapter(arrayAdapter1);