android - 从 json Android 获取缩略图

标签 android json

我正在从 json 获取缩略图。我已经解析了 json 并加载了缩略图,但是我的应用程序一打开应用程序就崩溃了。 LogCat 在 AppController.getInstance().getImageLoader() 中显示 NullpointerException。我引用了here .

代码:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.layout_sales_return);
 private class MyAdapter extends BaseAdapter {
    private LayoutInflater inflater = null;
    private ViewHolder holder = null;
    private Model_BarcodeDetail data;
    ImageLoader imageLoader = AppController.getInstance().getImageLoader(); // getting NullPointerException here

    public MyAdapter() {
        inflater = LayoutInflater.from(Activity_Sales_Return.this);
    }

    @Override
    public int getCount() {
        // TODO Auto-generated method stub
        return list.size();
    }

    @Override
    public Object getItem(int position) {
        // TODO Auto-generated method stub
        return list.get(position);
    }

    @Override
    public long getItemId(int position) {
        // TODO Auto-generated method stub
        return position;
    }

    @Override
    public boolean isEnabled(int position) {
        // TODO Auto-generated method stub
        return true;
    }

    @Override
    public View getView(final int position, View convertView,
            final ViewGroup parent) {
        try {
            if (convertView == null) {
                holder = new ViewHolder();
                inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                convertView = inflater.inflate(
                        R.layout.table_row_sales_return, null);

                if (imageLoader == null)
                    imageLoader =    
                    AppController.getInstance().getImageLoader();
                 holder.thumbNail = (NetworkImageView) convertView
                        .findViewById(R.id.thumbnail);


                convertView.setTag(holder);
            } else {
                holder = (ViewHolder) convertView.getTag();
            }

            data = (Model_BarcodeDetail) getItem(position);
            scannedBarcode = list.get(position).getBarcode();

            }
            }
            }

解析json代码:

public Model_BarcodeDetail GetBarcodeDetail(String api_token, String barcode) {
    HttpClient httpClient = new DefaultHttpClient();
    HttpPost postRequest = new HttpPost(Utility.BASE_URL
            + "?q=webservice/pdt/barcode_detail&token=" + api_token
            + "&barcode=" + barcode + "&return=json");

    String result = "";
    Model_BarcodeDetail data = null;

    try {
        ResponseHandler<String> responseHandler = new BasicResponseHandler();
        result = httpClient.execute(postRequest, responseHandler);
        JSONObject jsonObj = new JSONObject(result);
        JSONObject obj1 = jsonObj.getJSONObject("t2tapi");
        boolean error = obj1.has("errors");
        if (!error) {
            data = new Model_BarcodeDetail();
            data.setDatetime(obj1.getString("datetime"));
            data.setSuccess(obj1.getString("success"));
            JSONObject obj2 = obj1.getJSONObject("data");
            data.setName(obj2.getString("name"));

            data.setThumbnailUrl(obj2.getString("image"));

        }
    } catch (Exception e) {
        e.printStackTrace();
    }
    return data;
}

Json Logcat 警告:

04-01 11:20:26.834: W/System.err(3844): org.json.JSONException: No value for image
04-01 11:20:26.854: W/System.err(3844):     at org.json.JSONObject.get(JSONObject.java:355)
04-01 11:20:26.854: W/System.err(3844):     at org.json.JSONObject.getString(JSONObject.java:515)
04-01 11:20:26.854: W/System.err(3844):     at com.example.pdt.Activity_Sales_Return.GetBarcodeDetail(Activity_Sales_Return.java:3282)
04-01 11:20:26.864: W/System.err(3844):     at com.example.pdt.Activity_Sales_Return$BackgroundTask.doInBackground(Activity_Sales_Return.java:3186)
04-01 11:20:26.864: W/System.err(3844):     at com.example.pdt.Activity_Sales_Return$BackgroundTask.doInBackground(Activity_Sales_Return.java:1)
04-01 11:20:26.864: W/System.err(3844):     at android.os.AsyncTask$2.call(AsyncTask.java:288)
04-01 11:20:26.864: W/System.err(3844):     at java.util.concurrent.FutureTask.run(FutureTask.java:237)
04-01 11:20:26.864: W/System.err(3844):     at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
04-01 11:20:26.864: W/System.err(3844):     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
04-01 11:20:26.864: W/System.err(3844):     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
04-01 11:20:26.864: W/System.err(3844):     at java.lang.Thread.run(Thread.java:841)

原始json:

  <?xml version="1.0" encoding="UTF-8"?>
  <skudetail>
      <datetime>Wed, 30 Mar 2016 07:13:26 +0000</datetime>
   <success>1</success>
  <data>
    <name>AM X COL38/44</name>
    <reference>000086</reference>
    <description>EB 3 X COL  DURA 38/44</description>
    <barcode>000086004004</barcode>
    <price>24.00</price>
    <color>NAVY S</color>
    <size>40</size>
    <stock>11</stock>
    <branch>MDT</branch>
    <supplier>KAY</supplier>
    <supplier_name>DURABLEPRESS BY KAYMANS</supplier_name>
    <location></location>
    <basesell></basesell>
    <vat>A</vat>
    <avg_cost>5.600</avg_cost>
    <last_cost>0.000</last_cost>
    <next_cost>5.600</next_cost>
    <group_code>MEN</group_code>
    <alias_code></alias_code>
    <type>TRF</type>
    <remarks1>x</remarks1>
    <remarks2></remarks2>
    <listed_days></listed_days>
    <title></title>
    <type_name>FLAT FRONT TROUSERS</type_name>
    <user1_name></user1_name>
    <user2_name></user2_name>
    <meta_keywords></meta_keywords>
    <meta_description></meta_description>
    <image>http://staging.gait-
 way.com/files/product/32106/1459320344_410cCvu-IsL._UX466_.jpg</image>
</data>

 </skudetail>

最佳答案

我认为你错了,因为你有 XML 数据但没有 JSON 数据,你可以用

验证

http://www.w3schools.com/xml/xml_validator.asp

您可以使用 XMLDomParser 获取图像标记中的值并根据需要使用它您可以引用下面的链接以获取有关 XML 解析的引用

http://www.tutorialspoint.com/java_xml/java_dom_parse_document.htm

也引用这个它可能有帮助

http://www.tutorialspoint.com/json/json_comparison.htm

并且您可能还想使用 Picasso (打火机)或 Glide (更多功能)因为它减轻了您对将图像加载到 View 中的担忧

希望对你有帮助

关于android - 从 json Android 获取缩略图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36348766/

相关文章:

android - Android Studio 中的 NDK 集成

java - 安卓.content.res.Resources$NotFoundException : File from xml type layout resource ID #0x1020014

android - 将 Flash 游戏导出为 "embedables"到 iOS 和 Android

java - 即使设备所有权设置为此应用程序,也允许使用 pin 取消固定应用程序

java - Android 媒体播放器 : How to stop if another audio file is being loaded?

json - 我收到意外 token : for a valid JSON

python - Mapreduce无法按值排序[python]

javascript - jQuery ajax 调用在 ajax 响应中返回 HTML 而不是 JSON

java - 使用 jackson 可以吗?

javascript - 如何用javascript迭代json?