我有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,也将在板微调器中显示板名称。