다른 스피너의 항목 선택을 기준으로 스피너 값을 변경하려고합니다. 두 스피너를 채우는 데 사용되는 값은 array라는 xml 파일에 있습니다. 배열 파일은 여기notifyDataSetChanged()를 시작하면 어떻게 작동합니까?
<string-array name="eventYear">
<item>2010</item>
<item>2010</item>
<item>2010</item>
</string-array>
<string-array name="eventName">
<item>something</item>
<item>something</item>
<item>something</item>
<item>something</item>
.
.
.
</string-array>
같은 것이없는 이유 adapter0이
private class myOnItemSelectedListner implements OnItemSelectedListener {
@Override
public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
// TODO Auto-generated method stub
int count = 0;
if (count >= 1) {
// TODO Auto-generated method stub
// Get the year selected from the spinner
int data = Integer.parseInt(yearSpinner.getItemAtPosition(arg2)
.toString());
Log.v("RS", "Data: " + data);
// Depending on which year has been selected intialize the
// new adapter and set it for the event name spinner
switch (data) {
case 2010:
adapter0 = ArrayAdapter.createFromResource(
ReportSelectionActivity.this,
R.array.eventName2010,
android.R.layout.simple_spinner_dropdown_item);
case 2011:
adapter0 = ArrayAdapter.createFromResource(
ReportSelectionActivity.this,
R.array.eventName2011,
android.R.layout.simple_spinner_dropdown_item);
case 2012:
adapter0 = ArrayAdapter.createFromResource(
ReportSelectionActivity.this,
R.array.eventName2012,
android.R.layout.simple_spinner_dropdown_item);
default:
adapter0 = ArrayAdapter.createFromResource(
ReportSelectionActivity.this, R.array.plzSelect,
android.R.layout.simple_spinner_dropdown_item);
}
// Add adapter to spinner
adapter0.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
nameSpinner.setAdapter(adapter0);
// Change UI view
adapter0.notifyDataSetChanged();
}// End of if statment
count++;
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
// TODO Auto-generated method stub
}
}// End of private class myOnItemSelectedListener
그래서 글로벌 varibale가
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_report_selection);
// Display UI Elements
Log.v("RS", "Displaying Headers and Form");
headerText = (TextView) findViewById(R.id.headerTextView);
subheaderText = (TextView) findViewById(R.id.subHeaderTextView);
headerForm = (LinearLayout) findViewById(R.id.headerForm);
// For Event Year
yearTextView = (TextView) findViewById(R.id.yearTextView);
yearSpinner = (Spinner) findViewById(R.id.yearSpinner);
adapter0 = ArrayAdapter.createFromResource(
ReportSelectionActivity.this, R.array.eventYear,
android.R.layout.simple_spinner_dropdown_item);
adapter0.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
yearSpinner.setAdapter(adapter0);
// When a year is selected change the options in the event name spinner
yearSpinner.setOnItemSelectedListener(new myOnItemSelectedListner());
// For Event Names
nameTextView = (TextView) findViewById(R.id.nameTextView);
nameSpinner = (Spinner) findViewById(R.id.nameSpinner);
ArrayAdapter<CharSequence> adapter1 = ArrayAdapter.createFromResource(
ReportSelectionActivity.this, R.array.plzSelect,
android.R.layout.simple_spinner_dropdown_item);
adapter1.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
nameSpinner.setAdapter(adapter1);
// Add table rows to view
yearTableRow = (TableRow) findViewById(R.id.yearTableRow);
nameTableRow = (TableRow) findViewById(R.id.nameTableRow);
}
에서 onCreate 방법 및 기타 관련 코드 보인다 notifyDataSetChanged()가 작동하지 않습니까?
업데이트 된 코드
분명히private class myOnItemSelectedListner implements OnItemSelectedListener {
ArrayAdapter<CharSequence> adapter;
String[] array;
@Override
public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
// Log.v("RS", "In on onItemSelected");
// TODO Auto-generated method stub
// int count = 0;
/* if (count >= 1) { */
// TODO Auto-generated method stub
// Get the year selected from the spinner
int data;
try{
data = Integer.parseInt(yearSpinner.getItemAtPosition(arg2)
.toString());
}catch(NumberFormatException e){
data = 0;
}
Log.v("RS", "Data: " + data);
// Depending on which year has been selected intialize the
// new adapter and set it for the event name spinner
switch (data) {
case 2010:
Log.v("RS", "Case 2010");
adapter1.clear();
array = getResources().getStringArray(R.array.eventName2010);
list = new ArrayList<String>(Arrays.asList(array));
adapter1.add((CharSequence) list);
/*
* = ArrayAdapter.createFromResource(
* ReportSelectionActivity.this, R.array.eventName2010,
* android.R.layout.simple_spinner_dropdown_item)
*/
;
case 2011:
Log.v("RS", "Case 2011");
adapter1.clear();
array = getResources().getStringArray(R.array.eventName2011);
list = new ArrayList<String>(Arrays.asList(array));
adapter1.add((CharSequence) list);
/*
* adapter0 = ArrayAdapter.createFromResource(
* ReportSelectionActivity.this, R.array.eventName2011,
* android.R.layout.simple_spinner_dropdown_item);
*/
case 2012:
Log.v("RS", "Case 2012");
adapter1.clear();
array = getResources().getStringArray(R.array.eventName2012);
list = new ArrayList<String>(Arrays.asList(array));
adapter1.add((CharSequence) list);
/*
* adapter0 = ArrayAdapter.createFromResource(
* ReportSelectionActivity.this, R.array.eventName2012,
* android.R.layout.simple_spinner_dropdown_item);
*/
default:
Log.v("RS", "Case default");
adapter1.clear();
array = getResources().getStringArray(R.array.plzSelect);
list = new ArrayList<String>(Arrays.asList(array));
adapter1.add((CharSequence) list);
/*
* adapter0 = ArrayAdapter.createFromResource(
* ReportSelectionActivity.this, R.array.plzSelect,
* android.R.layout.simple_spinner_dropdown_item);
*/
}
// Add adapter to spinner
adapter1.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
nameSpinner.setAdapter(adapter1);
// Change UI view
// Log.v("RS", "notifying view of change");
adapter1.notifyDataSetChanged();
/*
* }// End of if statment
*/
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
// TODO Auto-generated method stub
}
}// End of private class myOnItemSelectedListener
당신이 어댑터는 다음 변경 때마다 다시하는 경우 notifyDataSetChanged 내가 notifyDataSetChanged를 추가하기 전에 그것은 작동하지 않는 – eski
@ eskimoapps.com 중복됩니다. 나는 그것을 온라인으로보고 그것이 효과가있을 것이라고 생각했다. 그것을 이해하면 notifyDataSetChanged()를 사용해야하는보기에서 변경된 내용이 표시됩니다. – thad
데이터를 기존 어댑터로 변경하는 경우, 데이터를 기존 어댑터로 다시 작성하는 경우입니다. 귀하의 스위치 성명서가 제대로 통과하는지 확인 했습니까? – eski