gpt4 book ai didi

java - Android Spinner - 防止刷新后关闭

转载 作者:行者123 更新时间:2023-12-02 03:13:20 27 4
gpt4 key购买 nike

我有一个下拉微调器,显示项目列表,并且此列表在收到 API 响应后每 X 秒更新一次。

问题是当列表更新时,微调框会自动关闭。我希望它在刷新后保持打开状态。

private void getItems(JSONArray j){
ArrayList<String> items = new ArrayList<>();

for (int i=0; i < j.length(); i++){
try {
//Getting json object
JSONObject json = j.getJSONObject(i);

//Adding the name of the student to array list
items.add(json.getString("name"));
} catch (JSONException e) {
e.printStackTrace();
}
}
spinner.setAdapter(new ArrayAdapter<>(BaseActivity.this, android.R.layout.simple_spinner_dropdown_item, items));
}

最佳答案

此演示展示了如何在保持 Spinner 打开的情况下更新它。

首先通过使用 setAdapter 设置 adapter 来初始化 Spinner

然后这些元素就会有更新。我使用 Handler 来模拟更新。在 getItems 方法中,不要创建新的适配器(如您所做的那样),而是使用 notifyDataSetChanged 来通知适配器数据集已更改。

代码如下。

private Spinner spinner;
private ArrayAdapter<String> adapter;
final List<String> items = new ArrayList<>();

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_test);

initializeSpinner();
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
try {
String updatedItems = "[{\"name\" : \"test1\"}, {\"name\" : \"test2\"}, {\"name\" : \"test2\"}]";
getItems(new JSONArray(updatedItems));
} catch (JSONException e) {
e.printStackTrace();
}
}
}, 10000);

}


private void initializeSpinner() {
items.add("initial");

spinner = (Spinner) findViewById(R.id.spinner);
adapter = new ArrayAdapter<String>(TestActivity.this, android.R.layout.simple_spinner_dropdown_item, items);
spinner.setAdapter(adapter);
}

private void getItems(JSONArray j) {
for (int i = 0; i < j.length(); i++) {
try {
//Getting json object
JSONObject json = j.getJSONObject(i);

//Adding the name of the student to array list
items.add(json.getString("name"));
} catch (JSONException e) {
e.printStackTrace();
}
}

adapter.notifyDataSetChanged();
}

关于java - Android Spinner - 防止刷新后关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40733216/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com