我把我的數據放在spinners.Data是來自URL.How使微調,所以當大綱是ICSE被選中它只反映那些年級,主題有ICSE?如何根據第一個微調器中選擇的數據在第二個微調器中顯示數據?
我的JSON
{
"results":[
{
"syllabus":"CBSE",
"grade":"5",
"subject":"Kannada",
"topic":"Grammar Level 1",
"id":28
},
{
"syllabus":"CBSE",
"grade":"5",
"subject":"Science",
"topic":"The Natural Calamities",
"id":16
},
{
"syllabus":"CBSE",
"grade":"6",
"subject":"Science",
"topic":"Movement in Animals",
"id":116
},
{
"syllabus":"CBSE",
"grade":"6",
"subject":"Social Studies",
"topic":"Contact With Distant Lands",
"id":59
},
{
"syllabus":"CBSE",
"grade":"6",
"subject":"Social Studies",
"topic":"Gupta Empire",
"id":34
},
"id":148
},
{
"syllabus":"ICSE",
"grade":"6",
"subject":"Computers",
"topic":"Introduction to QBASIC Programming",
"id":44
},
{
"syllabus":"ICSE",
"grade":"6",
"subject":"Social Studies - History",
"topic":"The Vedic Age",
"id":42
},
{
"syllabus":"Entrance Exam - Karnataka CET",
"grade":"12",
"subject":"Mathematics",
"topic":"Previous Year Question Papers",
"id":121
},
{
"syllabus":"Entrance Exam - Karnataka CET",
"grade":"12",
"subject":"Science - Biology",
"topic":"Previous Year Question Papers",
"id":117
},
{
"syllabus":"Entrance Exam - Karnataka CET",
"grade":"12",
"subject":"Science - Chemistry",
"topic":"Previous Year Question Papers",
"id":110
},
{
"syllabus":"Entrance Exam - Karnataka CET",
"grade":"12",
"subject":"Science - Physics",
"topic":"Previous Year Question Papers",
"id":104
}
}
任何幫助將是巨大的,我
MainActivity類別
public class MainActivity extends Activity {
JSONObject jsonobject;
JSONArray jsonarray;
JSONArray jsonarray2;
JSONObject jsonobject2;
ArrayList<String> worldlist;
ArrayList<String> worldlist2;
ArrayList<String> worldlist3;
ArrayList<Results> world;
TextView textView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView = (TextView) findViewById(R.id.topic);
// Download JSON file AsyncTask
new DownloadJSON().execute();
}
// Download JSON file AsyncTask
private class DownloadJSON extends AsyncTask<Void, Void, Void> {
@Override
protected Void doInBackground(Void... params) {
world = new ArrayList<Results>();
// Create an array to populate the spinner
worldlist = new ArrayList<String>();
worldlist2 = new ArrayList<String>();
worldlist3 = new ArrayList<String>();
// JSON file URL address
jsonobject = JSONfunctions
.getJSONfromURL("https://www.wonderslate.com/funlearn/topicsMap");
try {
// Locate the NodeList name
jsonarray = jsonobject.getJSONArray("results");
for (int i = 0; i < jsonarray.length(); i++) {
jsonobject = jsonarray.getJSONObject(i);
Results worldpop = new Results();
worldpop.setSyllabus(jsonobject.optString("syllabus"));
worldpop.setGrade(jsonobject.optString("grade"));
worldpop.setSubject(jsonobject.optString("subject"));
worldpop.setId(jsonobject.optString("id"));
world.add(worldpop);
worldlist.add(jsonobject.optString("syllabus"));
worldlist2.add(jsonobject.optString("grade"));
worldlist3.add(jsonobject.optString("subject"));
}
} catch (Exception e) {
Log.e("Error", e.getMessage());
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(Void args) {
// Locate the spinner in activity_main.xml
final Spinner mySpinner = (Spinner) findViewById(R.id.syllabus);
final Spinner mySpinner2 = (Spinner) findViewById(R.id.grade);
Spinner mySpinner3 = (Spinner) findViewById(R.id.subject);
// Spinner adapter
final LinkedHashSet<String>[] listToSet = new LinkedHashSet[]{new LinkedHashSet<String>(worldlist)};
//Creating Arraylist without duplicate values
final List<String> worldlistnew = new ArrayList<String>(listToSet[0]);
mySpinner
.setAdapter(new ArrayAdapter<String>(MainActivity.this,
android.R.layout.simple_spinner_dropdown_item,
worldlistnew));
//Creating ArrayList without duplicate values
listToSet[0] = new LinkedHashSet<String>(worldlist3);
//Creating Arraylist without duplicate values
final List<String> worldlistnew3 = new ArrayList<String>(listToSet[0]);
mySpinner3
.setAdapter(new ArrayAdapter<String>(MainActivity.this,
android.R.layout.simple_spinner_dropdown_item,
worldlistnew3));
// Spinner on item click listener
mySpinner
.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> arg0,
View arg1, int position, long arg3) {
if (mySpinner.getSelectedItem().toString().equals("CBSE")) {
// if (mySpinner.getId() == R.id.syllabus)
listToSet[0] = new LinkedHashSet<String>(worldlist2);
final List<String> worldlistnew2 = new ArrayList<String>(listToSet[0]);
mySpinner2
.setAdapter(new ArrayAdapter<String>(MainActivity.this,
android.R.layout.simple_spinner_dropdown_item,
worldlistnew2));
textView.setText("21");
} else if (mySpinner.getSelectedItem().toString().equals("ICSE")) {
textView.setText("31");
} else if (mySpinner.getSelectedItem().toString().equals("Entrance Exam - Karnataka CET"))
{
textView.setText("41");
}
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
// TODO Auto-generated method stub
}
});
}
}
private void resetGrade(String grade) {
}
}
可以分列出您的主列表的數據然後在子微調器中顯示數據。 贊如果你已經選擇了Spinner的值是x,那麼得到x位置的值並迭代它,並將它匹配到整個列表中,如果你找到了,然後創建一個子列表並向它添加匹配的項目,然後在二級微調器中顯示它 –