【问题标题】:the application crashed when i used custom adapter with using json当我使用自定义适配器和 json 时应用程序崩溃了
【发布时间】:2017-11-16 19:02:30
【问题描述】:

java.lang.IndexOutOfBoundsException: Invalid index 0, size is 0 in 微调器

   public void GetAllData() {
        JsonObjectRequest request=new JsonObjectRequest(Request.Method.GET, url, null, new Response.Listener<JSONObject>() {
            @Override
            public void onResponse(JSONObject response) {
                try {
                    ArrayList<CityList>mylist=new ArrayList<CityList>();
                    JSONArray array=response.getJSONArray("data");
                    for(int index=0;index<array.length();index++)
                    {
                        JSONObject object=array.getJSONObject(index);
                        mylist.add(new CityList(object.getInt("id"),object.getString("name")));
                    }
                    CityAdapter cityAdapter=new CityAdapter(MainActivity.this,R.layout.custome_spinner,R.id.humanmed,mylist);
                    ServiceName.setAdapter(cityAdapter);
                } catch (JSONException e) {
                    Toast.makeText(MainActivity.this, "bad", Toast.LENGTH_SHORT).show();        }
            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                Toast.makeText(MainActivity.this, "sad", Toast.LENGTH_SHORT).show();
            }
        });

【问题讨论】:

    标签: java android json spinner


    【解决方案1】:

    而不是这个:

    ArrayList<CityList>mylist=new ArrayList<CityList>();
    

    使用:

    ArrayList<City>mylist=new ArrayList<City>();
    

    而不是这个:

    mylist.add(new CityList(object.getInt("id"),object.getString("name")));
    

    使用:

    City city = new City();
    city.setId(object.getInt("id"));
    city.setName = (object.getString("name"));
    
    mylist.add(city);
    

    您还必须将类城市设为:

    public class City {
    
    private int id;
    
    private String name;
    
    public int getId() {
        return id;
    }
    
    public void setId(Int id) {
        this.id = id;
    }
    
    public String getName() {
        return name;
    }
    
    public void setName(String name) {
        this.name = name;
    }
    

    }

    并创建类 CityList 为:

    public class CityList {
    
    private List<City> cities;
    
    
    public List<City> getCities() {
        return cities;
    }
    
    public void setCities(List<City> cities) {
        this.cities = cities;
    }
    

    }

    【讨论】:

    • 请遵循这个更新的答案,这将完成你的工作,如果它有效,那么请不要忘记将此帖子标记为答案。快乐的编码兄弟:)
    • 我已经做了这个类,它叫做citylist,它包含名称和id
    • 检查更新的答案以了解如何制作 cityList 类。谢谢你:)
    • 请使用给定的代码然后让我知道如果有什么错误的伙伴。
    • 现在忘记 cityList 只需创建名称为 city 的类并按照我的代码然后让我知道是否有任何问题
    【解决方案2】:

    只有将它添加到您的自定义适配器微调器才能工作

    @覆盖 public View getDropDownView(int position, @Nullable View convertView, @NonNull ViewGroup parent) { 返回getView(位置,转换视图,父); }

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-02-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-07
      • 1970-01-01
      相关资源
      最近更新 更多