无法预先选择微调器项目以编辑值

时间:2019-07-20 10:51:47

标签: java android web-services spinner

我有3个微调器,用于填充Board,class和Subject。在选择董事会时,将过滤课程,在选择“课程”时,将过滤主题。 我有一个recyclerview,其中包含从Web服务检索到的项目的列表。单击任何列表项后,用户将导航到屏幕以编辑委员会,班级和主题名称。为此,我需要预先选择微调器中代表recyclerview中值的项目。

我能够正常填充微调器,但不能预选项目

此方法填充了“ Board”微调器

 List<PickListItems> boardList, showclassList, subjectList;
boardList = WebServiceResponse.spinnerItems("PopulateMultiListInfoResult", "ID", "NAME", response);
                            boardList.add(0, new PickListItems("-1", "Select Board"));
                            cboBoard.setAdapter(new ArrayAdapter<>
                                    (SubjectManagementListInfo.this,
                                            android.R.layout.simple_list_item_1, boardList));

调用REST服务并返回列表作为结果的实用方法。

 public static List<PickListItems> spinnerItems(String arrayName, String id, String name, String response) {
        List<PickListItems> pickItems = new ArrayList<>();
        try {
            JSONObject obj = new JSONObject(response);
            final JSONArray jsonArray = obj.getJSONArray(arrayName);
            for (int i = 0; i < jsonArray.length(); i++) {
                JSONObject user = jsonArray.getJSONObject(i);
                pickItems.add(new PickListItems(user.getString(id),
                        user.getString(name)));
            }
        } catch (
                JSONException e) {
            e.printStackTrace();
        }
        return pickItems;
    }
public class PickListItems {
    private String id;
    private String name;

    public PickListItems(){

    }
    public PickListItems(String id, String name) {
        this.id = id;
        this.name = name;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @NonNull
    @Override
    public String toString() {
        return name;
    }

    @Override
    public boolean equals(Object obj) {
        if (obj instanceof PickListItems) {
            PickListItems c = (PickListItems) obj;
            return c.getName().equals(name) && c.getId().equals(id);
        }

        return false;
    }
}

此方法尝试预先选择要编辑的木板名称

if (boardList != null) {
                                    PickListItems itemIndex = new PickListItems(jsonObject1.getString("ACADEMICS_BOARD_ID"), jsonObject1.getString("ACADEMICS_BOARD"));
                                    int objIndex = boardList.indexOf(itemIndex);
                                    cboBoard.setSelection(objIndex, false);
                                }

通过这种方式,有时会在微调器中预先选择板名称。在调试时,我发现变量boardList有时为null。即使boardList为null,也将在板微调器中显示板名称。

0 个答案:

没有答案