zoukankan      html  css  js  c++  java
  • 在列表中添加值后,无法检索出来

    原问题来自于CSDN问答频道,更多解决方案见:http://ask.csdn.net/questions/1879

    问题描述:

    在一个列表中我使用add(int,Object)方法添加了一个值,但是当我使用get(int)方法检索值的时候,却还是获得上次添加的值,并不是这次新添加的值。
    谁能给出适当的建议呢?
    我使用的下面的代码:

    public static List getCompanyName(String user_id) {
    
        List<CustomerList> fetchDatefromID = new ArrayList<CustomerList>();
        CustomerList tempProgram = new CustomerList();
        String result = "";
        InputStream is = null;
    
        ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
        nameValuePairs.add(new BasicNameValuePair("q", "" + user_id));
    
        // http post
        try {
            HttpClient httpclient = new DefaultHttpClient();
            HttpPost httppost = new HttpPost(
                    "https://erestaurantonline.co.uk/kernow_mobile/customer_search.php?");
            httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
            HttpResponse response = httpclient.execute(httppost);
            HttpEntity entity = response.getEntity();
            is = entity.getContent();
        } catch (Exception e) {
            Log.e("log_tag", "Error in http connection " + e.toString());
        }
        // convert response to string
        try {
            BufferedReader reader = new BufferedReader(new InputStreamReader(
                    is, "iso-8859-1"), 8);
            StringBuilder sb = new StringBuilder();
            String line = null;
            while ((line = reader.readLine()) != null) {
                sb.append(line + "\n");
            }
            is.close();
            result = sb.toString();
        } catch (Exception e) {
            Log.e("log_tag", "Error converting result " + e.toString());
        }
    
        // parse json data
        try {
            JSONArray jArray = new JSONArray(result);
            for (int i = 0; i < jArray.length(); i++) {
                JSONObject json_data = jArray.getJSONObject(i);
    
                if (json_data.getString("company") != null) {
                    tempProgram.setCompanyName(json_data.getString("company"));
                    tempProgram.setID(json_data.getString("id"));
                    fetchDatefromID.add(i, tempProgram);
                }
    
            }
    
        } catch (JSONException e) {
            Log.e("log_tag", "Error parsing data " + e.toString());
        }
    
        for (int i = 0; i < fetchDatefromID.size(); i++) {
            Log.v("log_tag","DataMy  :  "+fetchDatefromID.get(i).getCompanyName().toString());
        }
        return fetchDatefromID;
    }

    解决方案:

    把下面的代码:

    if (json_data.getString("company") != null) {
                    tempProgram.setCompanyName(json_data.getString("company"));
                    tempProgram.setID(json_data.getString("id"));
                    fetchDatefromID.add(i, tempProgram);
                }

    换成:

    if (json_data.getString("company") != null) {
                    tempProgram = new CustomerList();
                    tempProgram.setCompanyName(json_data.getString("company"));
                    tempProgram.setID(json_data.getString("id"));
                    fetchDatefromID.add(i, tempProgram);
                }


    否则,list中的每一项都要引用同样的对象,那样的话总是显示你最后一次输入的数据。

  • 相关阅读:
    VS2015使用scanf报错解决方案
    C++的标准模板库(STL)简介
    C++中常用特殊符号简介(& , * , : , :: , ->)
    C++中#include <xxx.h>和#include "xxx.h"的区别(尖括号和双引号的区别)
    C++中#include的工作原理
    opencv中Mat与IplImage,CVMat类型之间转换
    C++数据类型简析
    让你在DOS中任意切换目录
    七种Prolog解释器/编译器
    C++中引用(&)的用法和应用实例
  • 原文地址:https://www.cnblogs.com/javawebsoa/p/2987574.html
Copyright © 2011-2022 走看看