Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从webservice检查android中JsonArray值是否可用并获取其数据?_Android_Json_Web Services_Android Listview - Fatal编程技术网

如何从webservice检查android中JsonArray值是否可用并获取其数据?

如何从webservice检查android中JsonArray值是否可用并获取其数据?,android,json,web-services,android-listview,Android,Json,Web Services,Android Listview,我正在学习JsonParsing。我有一些category\u列表array。我解析来自该数组的数据,并将其绑定到android中的listView。从该列表中,我还必须再次对该Web服务进行API调用,并检查子类别是否存在?如果没有子类别,则它将是产品列表。我尝试了以下方法,但无法从productList json解析 如何决定或给我任何解决方案的逻辑。我的代码如下: main.java package com.epe.yehki.ui; import java.util.ArrayL

我正在学习JsonParsing。我有一些
category\u列表
array。我解析来自该数组的数据,并将其绑定到android中的
listView
。从该列表中,我还必须再次对该Web服务进行API调用,并检查
子类别是否存在?如果没有子类别,则它将是
产品列表
。我尝试了以下方法,但无法从productList json解析

如何决定或给我任何解决方案的逻辑。我的代码如下:

main.java

   package com.epe.yehki.ui;

import java.util.ArrayList;
import java.util.HashMap;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import com.epe.yehki.backend.ServiceHandler;
import com.epe.yehki.uc.Header;
import com.example.yehki.R;

import android.R.string;
import android.app.Activity;
import android.app.ListActivity;
import android.app.ProgressDialog;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.TextView;
import android.widget.AdapterView.OnItemClickListener;

public class SubCategoryActivity extends ListActivity {
    // SUB CATEGORIES...
    private static final String TAG_CAT_LlIS = "categories_list";
    private static final String TAG_CAT_ID = "category_id";
    private static final String TAG_CAT_NAME = "category_name";
    int flag;
    public Header header;
    public TextView title;
    // PRODUCTS....
    private static final String TAG_PRODUCT_ID = "product_id";
    private static final String TAG_PRODUCT_LlST = "product_list";
    private static final String TAG_PRODUCT_NAME = "product_name";
    private static final String TAG_PRODUCT_IMG = "image";
    private static final String TAG_PRODUCT_DESCRIPTION = "detail_description";

    // contacts JSONArray
    JSONArray subcategories = null;
    JSONArray products = null;
    public String catid;
    public String id;
    String name;
    JSONObject jsonObj;

    // Hashmap for ListView
    ArrayList<HashMap<String, String>> subcategoryList;
    ArrayList<HashMap<String, String>> productList;

    private ProgressDialog pDialog;

    // URL to get contacts JSON
    private static String url = "http://yehki.epagestore.in/app_api/categories.php";

    private static String mainurl = "http://yehki.epagestore.in/";
    public String suburl = "";

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_sub);
        this.header = (Header) findViewById(R.id.headersubcat);
        title = (TextView) findViewById(R.id.title);
        // getting intent data
        Intent in = getIntent();

        // Get JSON values from previous intent

        try {
            catid = in.getStringExtra(TAG_CAT_ID);
            name = in.getStringExtra(TAG_CAT_NAME);
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        System.out.println("::::::::::::::MY CATEGORY ID::::::::::::::IN SUB "
                + catid);
        subcategoryList = new ArrayList<HashMap<String, String>>();

        suburl = "http://yehki.epagestore.in/app_api/categories.php?"
                + TAG_CAT_ID + "=" + catid;
        System.out.println("::::::::::::::::MY SUBCATEGORY URL::::::::::::"
                + suburl);
        title.setText(name);

        // Displaying all values on the screen

        ListView lv = getListView();
        new GetSubCategories().execute();

        // Listview on item click listener
        lv.setOnItemClickListener(new OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> parent, View view,
                    int position, long id) {
                // getting values from selected ListItem
                String catname = ((TextView) view.findViewById(R.id.name))
                        .getText().toString();

                Intent in = new Intent(getApplicationContext(),
                        SubCategoryTwoActivity.class);
                in.putExtra(TAG_CAT_NAME, catname);
                in.putExtra(TAG_CAT_ID, catid);

                startActivity(in);

            }
        });

    }

    private class GetSubCategories extends AsyncTask<Void, Void, Void> {

        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            // Showing progress dialog
            pDialog = new ProgressDialog(SubCategoryActivity.this);
            pDialog.setMessage("Please wait...");
            pDialog.setCancelable(false);
            pDialog.show();

        }

        @Override
        protected Void doInBackground(Void... arg0) {
            // Creating service handler class instance
            ServiceHandler sh = new ServiceHandler();
            System.out.println(":::::::::::::::::::SUB URL:::::::::::::::::"
                    + suburl);
            // Making a request to url and getting response
            String jsonStr = sh.makeServiceCall(suburl, ServiceHandler.GET);

            Log.d("Response: ", "> " + jsonStr);
            if (jsonStr != null) {
                try {
                    jsonObj = new JSONObject(jsonStr);

                    // Getting JSON Array node
                    if (jsonObj.has(TAG_CAT_LlIS)) {
                        subcategories = jsonObj.getJSONArray(TAG_CAT_LlIS);
                        if (subcategories != null
                                && subcategories.length() != 0) {
                            // looping through All Contacts
                            flag = 0;
                            System.out
                                    .println(":::::::::::FLAG IN SUB:::::::::::"
                                            + subcategories.length());
                            for (int i = 0; i < subcategories.length(); i++) {
                                JSONObject c = subcategories.getJSONObject(i);

                                id = c.getString(TAG_CAT_ID);
                                String name = c.getString(TAG_CAT_NAME);

                                // tmp hashmap for single category
                                HashMap<String, String> subcategory = new HashMap<String, String>();

                                // adding each child node to HashMap key =>
                                // value
                                subcategory.put(TAG_CAT_ID, id);
                                subcategory.put(TAG_CAT_NAME, name);

                                // adding contact to contact list
                                subcategoryList.add(subcategory);
                            }
                        }
                    } else {
                        flag = 1;
                        products = jsonObj.getJSONArray(TAG_PRODUCT_LlST);

                        System.out
                                .println("==========SIZE OF MY ARRAY PRODUCT LIST==================="
                                        + products.length());
                        System.out
                                .println(":::::::::::::::::::Product array:::::::::::::::"
                                        + products);
                        // looping through All Contacts
                        for (int i = 0; i < products.length(); i++) {
                            JSONObject p = products.getJSONObject(i);

                            String proId = p.getString(TAG_PRODUCT_ID);
                            String proName = p.getString(TAG_PRODUCT_NAME);
                            String productImg = p.getString(TAG_PRODUCT_IMG);
                            String productDesc = p
                                    .getString(TAG_PRODUCT_DESCRIPTION);
                            System.out
                                    .println("::::::::::::::::MY PRODUCT DETAILS::::::::::::::"
                                            + TAG_PRODUCT_ID
                                            + "    PRODUCT NAME          "
                                            + TAG_PRODUCT_NAME
                                            + "   PRODUCT_DESCRIPTION      "
                                            + TAG_PRODUCT_DESCRIPTION
                                            + "   PRODUCT IMAGE    "
                                            + TAG_PRODUCT_IMG);

                            HashMap<String, String> product = new HashMap<String, String>();

                            // adding each child node to HashMap key => value
                            // product.put(TAG_PRODUCT_ID, proId);
                            product.put(TAG_PRODUCT_NAME, proName);

                            product.put(TAG_PRODUCT_DESCRIPTION, productDesc);
                            /*
                             * product.put(TAG_PRODUCT_IMG, productImg);
                             */
                            productList.add(product);
                        }

                    }

                } catch (JSONException e) {
                    e.printStackTrace();
                }
            } else {
                Log.e("ServiceHandler", "Couldn't get any data from the url");
            }

            return null;
        }

        @Override
        protected void onPostExecute(Void result) {
            super.onPostExecute(result);
            // Dismiss the progress dialog
            if (pDialog.isShowing())
                pDialog.dismiss();
            /**
             * Updating parsed JSON data into ListView
             * 
             * */

            if (flag == 0) {

                ListAdapter adapter = new SimpleAdapter(
                        SubCategoryActivity.this, subcategoryList,
                        R.layout.list_item, new String[] { TAG_CAT_NAME },
                        new int[] { R.id.name });
                setListAdapter(adapter);
            } else {
                ListAdapter adapter = new SimpleAdapter(
                        SubCategoryActivity.this, subcategoryList,
                        R.layout.activity_single_produt, new String[] {
                                TAG_PRODUCT_NAME, TAG_PRODUCT_DESCRIPTION,
                                TAG_PRODUCT_IMG }, new int[] {
                                R.id.product_label, R.id.product_desc,
                                R.id.iv_product_img });
                setListAdapter(adapter);
            }

        }

    }
}
package com.epe.yehki.ui;
导入java.util.ArrayList;
导入java.util.HashMap;
导入org.json.JSONArray;
导入org.json.JSONException;
导入org.json.JSONObject;
导入com.epe.yehki.backend.ServiceHandler;
导入com.epe.yehki.uc.Header;
导入com.example.yehki.R;
导入android.R.string;
导入android.app.Activity;
导入android.app.ListActivity;
导入android.app.ProgressDialog;
导入android.content.Intent;
导入android.os.AsyncTask;
导入android.os.Bundle;
导入android.util.Log;
导入android.view.view;
导入android.widget.AdapterView;
导入android.widget.ListAdapter;
导入android.widget.ListView;
导入android.widget.simpledapter;
导入android.widget.TextView;
导入android.widget.AdapterView.OnItemClickListener;
公共类子类别活动扩展了ListActivity{
//子类别。。。
私有静态最终字符串标记\u CAT\u LlIS=“categories\u list”;
私有静态最终字符串标记\u CAT\u ID=“category\u ID”;
私有静态最终字符串标记\u CAT\u NAME=“category\u NAME”;
int标志;
公共报头;
公共文本视图标题;
//产品。。。。
私有静态最终字符串标记\u PRODUCT\u ID=“PRODUCT\u ID”;
私有静态最终字符串TAG\u PRODUCT\u LlST=“PRODUCT\u list”;
私有静态最终字符串TAG\u PRODUCT\u NAME=“PRODUCT\u NAME”;
私有静态最终字符串TAG\u PRODUCT\u IMG=“image”;
私有静态最终字符串标记\产品\描述=“详细\描述”;
//联系JSONArray
JSONArray子类别=null;
JSONArray产品=null;
公共字符串catid;
公共字符串id;
字符串名;
JSONObject jsonObj;
//ListView的Hashmap
ArrayList子类别列表;
ArrayList产品列表;
私人对话;
//获取联系人JSON的URL
专用静态字符串url=”http://yehki.epagestore.in/app_api/categories.php";
专用静态字符串mainurl=”http://yehki.epagestore.in/";
公共字符串suburl=“”;
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_sub);
this.header=(header)findViewById(R.id.headersubcat);
title=(TextView)findViewById(R.id.title);
//获取意图数据
Intent in=getIntent();
//从先前的意图中获取JSON值
试一试{
catid=in.getStringExtra(标记类别ID);
name=in.getStringExtra(标签名称);
}捕获(例外e){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
System.out.println(“:::::::我的类别ID:::::::::IN SUB”
+catid);
子类别列表=新的ArrayList();
子URL=”http://yehki.epagestore.in/app_api/categories.php?"
+TAG_CAT_ID+“=”+catid;
System.out.println(“”:我的子类别URL:
+子URL);
title.setText(名称);
//在屏幕上显示所有值
ListView lv=getListView();
新建GetSubCategories().execute();
//单击项目上的Listview侦听器
lv.setOnItemClickListener(新的OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父级、视图、,
内部位置,长id){
//从选定的ListItem获取值
字符串catname=((TextView)view.findViewById(R.id.name))
.getText().toString();
Intent in=新的Intent(getApplicationContext(),
子类别(活动类);
in.putExtra(标签、类别名称、类别名称);
in.putExtra(标签、类别ID、catid);
星触觉(in);
}
});
}
私有类GetSubCategories扩展异步任务{
@凌驾
受保护的void onPreExecute(){
super.onPreExecute();
//显示进度对话框
pDialog=新建进度对话框(子类别Activity.this);
setMessage(“请稍候…”);
pDialog.setCancelable(假);
pDialog.show();
}
@凌驾
受保护的Void doInBackground(Void…arg0){
//创建服务处理程序类实例
ServiceHandler sh=新的ServiceHandler();
System.out.println(“”:子URL:
+子URL);
//向url发出请求并获得响应
字符串jsonStr=sh.makeServiceCall(子URL,ServiceHandler.GET);
Log.d(“响应:”、“>”+jsonStr);
if(jsonStr!=null){
试一试{
jsonObj=新的JSONObject(jsonStr);
//获取JSON数组节点
if(jsonObj.has(TAG_CAT_LlIS)){
子类别=jsonObj.getJSONArray(TAG_CAT_LlIS);
如果(子类别!=null
&&子类别。长度()!=0){
//通过所有触点循环
flag=0;
系统输出
.println(“:::::子目录中的标志:”
if(jsonObj.has("name_of_the_field")){
    //yes
}
JSONArray mJSONArray = jsonObj.optJSONArray("name of array");
public boolean has (String name)    
//Returns true if this object has a mapping for name. The mapping may be NULL.