gpt4 book ai didi

android - 为什么我的 recyclerview 从微调器中选择时有 2 行相同的数据?

转载 作者:行者123 更新时间:2023-11-29 23:19:41 25 4
gpt4 key购买 nike

我有一个 Spinner 和一个 RecyclerView 并且 RecyclerView 用于显示我从数据库中获取的数据,但是在 RecyclerView,当我在 Spinner 上选择第二个选项时,我有两行相同的东西。

我尝试过切换循环、更改适配器和更改 api url。

    Spinner spinner = (Spinner) findViewById(R.id.spinner);
adapterspinner = ArrayAdapter.createFromResource(this,R.array.planets_array,android.R.layout.simple_spinner_item);
adapterspinner.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapterspinner);
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
if(i==0)
{
loadt1trolley();

}
if(i==1)
{

loadalltrolley();
}
}

@Override
public void onNothingSelected(AdapterView<?> adapterView) {

}
});








private void loadalltrolley(){
StringRequest stringRequest = new StringRequest(Request.Method.GET, PRODUCT_URL,new Response.Listener<String>() {
@Override
public void onResponse(String response) {
try {
JSONArray products = new JSONArray(response);
for(int i =0;i<products.length();i++){
JSONObject productObject = products.getJSONObject(i);
String gate_no = productObject.getString("gate_no");
String dock_name = productObject.getString("dock_name");
String dock_desc = productObject.getString("dock_desc") ;
int flight_arrival = productObject.getInt("flight_arrival");
int trolley_count = productObject.getInt("trolley_count");

Product product = new Product(gate_no,dock_name,dock_desc,flight_arrival,trolley_count);
allterminalList.add(product);




}



allterminaladapter = new ProductAdapter(alert.this,allterminalList);
recyclerView.setAdapter(allterminaladapter);
int count = allterminaladapter.getItemCount();
int i =0;



if (count>0)
{
displayNotification();
}

} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(alert.this,error.getMessage(),Toast.LENGTH_SHORT).show();
}
});
Volley.newRequestQueue(this).add(stringRequest);

refresh(6000);



}




private void loadt1trolley(){
StringRequest stringRequest1 = new StringRequest(Request.Method.GET, T1_URL,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
try {
JSONArray products = new JSONArray(response);

for(int i =0;i<products.length();i++){
JSONObject productObject = products.getJSONObject(i);
String gate_no = productObject.getString("gate_no");
String dock_name = productObject.getString("dock_name");
String dock_desc = productObject.getString("dock_desc") ;
int flight_arrival = productObject.getInt("flight_arrival");
int trolley_count = productObject.getInt("trolley_count");

Product product = new Product(gate_no,dock_name,dock_desc,flight_arrival,trolley_count);
allterminalList.add(product);




}



allterminaladapter = new ProductAdapter(alert.this,allterminalList);
recyclerView.setAdapter(allterminaladapter);
int count = allterminaladapter.getItemCount();
int i =0;



if (count>0)
{
displayNotification();
}

} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(alert.this,error.getMessage(),Toast.LENGTH_SHORT).show();
}
});
Volley.newRequestQueue(this).add(stringRequest1);

refresh(6000);



}

我希望输出根据 URL 显示显示,每个数据显示 1 行,但当我在微调器上按位置 1 时它显示 2 行

最佳答案

在发起新的网络请求之前需要清空所有终端列表

 allterminalList.clear();
if(i==0)
{
loadt1trolley();

}
else if(i==1)
{

loadalltrolley();
}

在 Spinner 的 onItemSelected() 方法中添加代码,这应该可以解决问题。

关于android - 为什么我的 recyclerview 从微调器中选择时有 2 行相同的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54587879/

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