簡體   English   中英

要使用什么數據結構才能達到要求的結果?

[英]What data structure to be used to achieve the required result?

我從服務器獲取JSON響應,如下所示

{
    "ClassListTaughtByStaff": {
        "ClassTeacherTable": [
            {
                "StandardId": "96e671e2-c1fe-4879-b3bc-88c721292edf",
                "StandardName": "IV",
                "DivisionId": "ac2b6419-a01b-46e1-a5e3-23e84cb04af9",
                "DivisionName": "A"
            }
        ],
        "SubjectTeacherTable": [
            {
                "StandardId": "90da4426-1ba4-4f79-86a5-abb54cf99efb",
                "StandardName": "U.K.G",
                "DivisionId": "ac2b6419-a01b-46e1-a5e3-23e84cb04af9",
                "DivisionName": "A"
            },
            {
                "StandardId": "b2e5f4a8-2abb-4362-a968-e96d9bce3dce",
                "StandardName": "I",
                "DivisionId": "895f06a5-1bf6-488b-87e4-2f8497e27680",
                "DivisionName": "B"
            },
            {
                "StandardId": "08fafc51-3ebe-4e9c-8351-af06dc15ca16",
                "StandardName": "II",
                "DivisionId": "ac2b6419-a01b-46e1-a5e3-23e84cb04af9",
                "DivisionName": "A"
            },
            {
                "StandardId": "08fafc51-3ebe-4e9c-8351-af06dc15ca16",
                "StandardName": "II",
                "DivisionId": "895f06a5-1bf6-488b-87e4-2f8497e27680",
                "DivisionName": "B"
            },
            {
                "StandardId": "ed61b45d-a779-4d65-8330-745853396980",
                "StandardName": "III",
                "DivisionId": "ac2b6419-a01b-46e1-a5e3-23e84cb04af9",
                "DivisionName": "A"
            },
            {
                "StandardId": "ed61b45d-a779-4d65-8330-745853396980",
                "StandardName": "III",
                "DivisionId": "895f06a5-1bf6-488b-87e4-2f8497e27680",
                "DivisionName": "B"
            },
            {
                "StandardId": "96e671e2-c1fe-4879-b3bc-88c721292edf",
                "StandardName": "IV",
                "DivisionId": "895f06a5-1bf6-488b-87e4-2f8497e27680",
                "DivisionName": "B"
            }
        ]
    }
}

我正在使用ArrayList在2個不同的微調器中加載標准名稱和部門名稱。 如果您看到這些圖像,則所有標准和分割都將加載到各自的微調器中。 現在,如果我從標准微調器中選擇IV ,則分區微調器應加載AB ,就像選擇標准I一樣,則僅將分區B加載到分區微調器中。 我該如何實現?

標准清單 部門清單

您應該在第一個微調器中偵聽更改,然后相應地更改第二個微調器。

您可以執行以下操作:

standardNameSpinner.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

        List<String> values = findDivisionNamesBasedOnStandardName(parent.getItemAtPosition(position));
        ArrayAdapter<CharSequence> adapter = new ArrayAdapter<CharSequence>(
                view.getContext(), android.R.layout.simple_spinner_item, android.R.id.text1);
        divisionNameSpinner.setAdapter(adapter);
    }
});

findDivisionNamesBasedOnStandardName方法中,您必須返回有關參數的相關部門名稱作為所選標准名稱。

編輯:

對於映射部分,創建一個類似的類:

public class Subject {
    String standardId;
    String standardName;

    String divisionId;
    String divisionName;
}

然后將所有結果放入List<Subject> 然后,您可以在此列表上進行迭代,然后findDivisionNamesBasedOnStandardName將如下所示:

public List<String> findDivisionNamesBasedOnStandardName(String standardName) {
    List<String> result = new ArrayList<>();
    for (Subject subject : mSubjects) {
        if (subject.standardName == standardName) {
            result.add(subject.divisionName);
        }
    }
    return result;
}

其中mSubjects是從JSON響應中提取的所有主題的列表。

好。 我幾乎可以為您提供幫助。

  • 做兩個微調器。

  • 之后,將setOnItemSelectedListener都設置為兩者。

  • 制作兩個方法filterOne(int selectedId)filterTwo(int selectedId)

偽代碼:

Spinner first,second;
SpinnerAdapter firstAdapter, secondAdapter;

filterOne(int id) {
    secondAdapter = new CustomSpinnerAdapter(id);
    second.setAdapter(secondAdapter);
}

filerTwo(int id) {
    firstAdapter = new CustomSpinnerAdapter(id);
    first.setAdapter(firstAdapter);
}

ArrayList<Date> dates;
CustomSpinnerAdapter(int id) {
    dates = new ArrayList<Date>();
    // on click from first spinner. set data to second.
    if(id == 0)  {
        dates.add(new Date(2015, 06, 10));
        dates.add(new Date(2015, 06, 11));
    } else if(id == 1) {
    // on click from second spinner. set data to first.
        dates.add(new Date(2015, 06, 10));
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM