自定义ListView显示上一个值

时间:2016-01-23 12:19:24

标签: android listview android-arrayadapter custom-lists

我有一个自定义listView,其中包含来自Cloud DB的200个值。正确接收所有值并将其添加到ArrayList(hotelList)中。当我将ArrayList(hotelList)传递给Custom Adapter类时,将所有值显示为最后一个元素。在这里找到的许多stackOverflow问题都与此有关,我也试过了。没有人为我工作。我该怎么解决这个问题? 代码是,

@Override
    protected void onPostExecute(String result) {
        try {
            Log.d("Inside Post", "message");
            root = new JSONObject(result);
            validation = root.getInt("response");
            message = root.getString("message");
            JSONArray data=root.getJSONArray("data");
            data.length();
            if(validation==1) {
                hgs=new HotelGetSetter();//Getting and setting class
                for(int i=0;i<data.length();i++){
                    hgs.setName(data.getJSONObject(i).getString("hotel_name"));
                    hgs.setPlace(data.getJSONObject(i).getString("city"));
                    hotelList.add(hgs);//While Debugging, all the 200 values from db received and added in the ArrayList(hotelList) values also there correctly
                }
                //But after the loop all the values here changed to last element value(debugged).
               mainMethod();
            }
        }
        catch (JSONException e) {
            e.printStackTrace();
    }
 }
 public void mainMethod(){
    HotelCustomAdapter hca=new HotelCustomAdapter(HotelMaster.this,hotelList);
    list_hotel.setAdapter(hca);
    //list_hotel.setAdapter(new HotelCustomAdapter(this, hotel_id1,hotel_name1,hotel_place1));
}

2 个答案:

答案 0 :(得分:2)

初始化变量hgs = new HotelGetSetter();超出for循环,然后你总是编辑同一个实例

答案 1 :(得分:1)

您正在通过循环更改同一对象hsg的值,而不是为每组值创建不同的对象。因此200个相同的对象。

只需将hgs=new HotelGetSetter();移动到循环中即可。