Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/185.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
Java 在Android中从JSON填充微调器_Java_Android_Json - Fatal编程技术网

Java 在Android中从JSON填充微调器

Java 在Android中从JSON填充微调器,java,android,json,Java,Android,Json,我有如下JSON数据: [{"id":"1", "client_name":"Glasco Smith Klin", "campaign_name":"Health Medicine Survay", "question":"MODE OF COMPLAINT CAN BE GIVEN THROUGH __________________", "option_A":"WRITTEN", "option_B":"ORAL", "option_C":"PHONE CALL", "option_D":

我有如下JSON数据:

[{"id":"1",
"client_name":"Glasco Smith Klin",
"campaign_name":"Health Medicine Survay",
"question":"MODE OF COMPLAINT CAN BE GIVEN THROUGH __________________",
"option_A":"WRITTEN",
"option_B":"ORAL",
"option_C":"PHONE CALL",
"option_D":"ALL OF THE ABOVE",
"q_prefix":"GSKHMSQ"},

{"id":"2",
"client_name":"Glasco Smith Klin",
"campaign_name":"Health Medicine Survay",
"question":"ADDING NEW FIR CAN BE DONE FROM WHICH ROLE",
"option_A":"IO",
"option_B":"TRAFFIC",
"option_C":"SHO-CRIME",
"option_D":"ADMINISTRATOR",
"q_prefix":"GSKHMJD"}]
我想在微调器中检索所有
q_prefix
列。但在“我的微调器”中,不显示任何数据。当我运行我的应用程序时,我得到一个错误:“无法启动活动”和
Java.lang.NullPointerException
在这一行:
jsonArray=jSon.getJSONArray(TAG_code)

这是我的密码:

public class SpinDemo extends Activity {

    private static String strUrl = "http://192.168.1.61/jyoti/android_app/all_questions.php";
    private static String TAG_ID = "id";
    private static String TAG_CODE = "q_prefix";
    JSONArray jsonArray = null;
    Spinner codeSpinner, spinner2;

    @SuppressWarnings("unused")
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        codeSpinner = (Spinner) findViewById(R.id.spinner2);

        ArrayList<String> codeList = new ArrayList<String>();

        // creating instance of JSONPrser
        JSONParser jParser = new JSONParser();
        // getting JSON string from URL
        JSONObject jSon = jParser.getJSONFromUrl(strUrl);
        System.out.println("Hello ********************");

        try {
            // Getting Array of Code
            jsonArray = jSon.getJSONArray(TAG_CODE);
            final String[] items = new String[jsonArray.length()];
            // looping through All Contacts
            for (int i = 0; i < jsonArray.length(); i++) {
                JSONObject c = jsonArray.getJSONObject(i);

                // Storing each json item in variable
                String strCode = c.getString(TAG_CODE);
                items[i] = c.getString(TAG_CODE);
                System.out.println("Hello events " + items);
            }

            ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
                    android.R.layout.simple_spinner_item);
            adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
            codeSpinner.setAdapter(adapter);
        } catch (JSONException je) {
            je.printStackTrace();

        }

    }

}
public类SpinDemo扩展活动{
私有静态字符串strUrl=”http://192.168.1.61/jyoti/android_app/all_questions.php";
私有静态字符串标记\u ID=“ID”;
私有静态字符串TAG_CODE=“q_prefix”;
JSONArray JSONArray=null;
纺纱机编码纺纱机,纺纱机2;
@抑制警告(“未使用”)
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
编码微调器=(微调器)findViewById(R.id.spinner2);
ArrayList codeList=新的ArrayList();
//创建JSONPrser的实例
JSONParser jParser=新的JSONParser();
//从URL获取JSON字符串
JSONObject jSon=jParser.getJSONFromUrl(strUrl);
System.out.println(“Hello**********************”;
试一试{
//获取代码数组
jsonArray=jSon.getJSONArray(标记代码);
final String[]items=新字符串[jsonArray.length()];
//通过所有触点循环
for(int i=0;i
使用

在解析Json之前

或者使用AsyncTask获取响应

使用

在解析Json之前

或者使用AsyncTask获取响应

使用

在解析Json之前

或者使用AsyncTask获取响应

使用

在解析Json之前

或者使用AsyncTask获取响应


您没有将
数组传递到
数组适配器
构造函数按如下方式执行:

 ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
                    android.R.layout.simple_spinner_item,items);
ArrayAdapter=新的ArrayAdapter(此,
android.R.layout.simple\u微调器(项目,项目);

并且,不要从主线程发出webservice请求,用于在后台执行操作,并在操作完成时更新UI元素

您没有将
数组传递给
ArrayAdapter
构造函数,而是按照以下方式执行:

 ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
                    android.R.layout.simple_spinner_item,items);
ArrayAdapter=新的ArrayAdapter(此,
android.R.layout.simple\u微调器(项目,项目);

并且,不要从主线程发出webservice请求,用于在后台执行操作,并在操作完成时更新UI元素

您没有将
数组传递给
ArrayAdapter
构造函数,而是按照以下方式执行:

 ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
                    android.R.layout.simple_spinner_item,items);
ArrayAdapter=新的ArrayAdapter(此,
android.R.layout.simple\u微调器(项目,项目);

并且,不要从主线程发出webservice请求,用于在后台执行操作,并在操作完成时更新UI元素

您没有将
数组传递给
ArrayAdapter
构造函数,而是按照以下方式执行:

 ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
                    android.R.layout.simple_spinner_item,items);
ArrayAdapter=新的ArrayAdapter(此,
android.R.layout.simple\u微调器(项目,项目);
而不是从主线程发出webservice请求,用于在后台执行操作,并在操作完成时更新UI元素问题和解决方案:

  • 检查您的logcat,它应该有,原因是您直接在主线程上调用WebAPI,从蜂窝开始,直接在主UI线程上实现长时间运行的任务是不可能的

    解决方案是实现线程机制,您可以在android中实现,这在android中称为无痛线程

  • JSON解析中存在一些问题,您需要正确地学习和理解

  • 问题示例:

     JSONObject jSon = jParser.getJSONFromUrl(strUrl);
            System.out.println("Hello ********************");
    
            try {
                // Getting Array of Code
                jsonArray = jSon.getJSONArray(TAG_CODE);
    
                 .....
                 .....
    
    通过查看上面给出的响应,我可以说您得到的是直接响应的JSONArray,而不是JSONObject

    JSON解析中的第二个错误是您试图获取JSONArray(标记代码),这不是必需的,因为您已经有了JSONArray作为响应,您只需迭代对象,就可以获取您想要的任何值。

    问题和解决方案:

  • 检查您的logcat,它应该有,原因是您直接在主线程上调用WebAPI,从蜂窝开始,直接在主UI线程上实现长时间运行的任务是不可能的

    解决方案是实现线程机制,您可以在android中实现,这在android中称为无痛线程

  • JSON解析中存在一些问题,您需要正确地学习和理解

  • 问题示例:

     JSONObject jSon = jParser.getJSONFromUrl(strUrl);
            System.out.println("Hello ********************");
    
            try {
                // Getting Array of Code
                jsonArray = jSon.getJSONArray(TAG_CODE);
    
                 .....
                 .....
    
    通过查看上面给出的响应,我可以说您得到的是直接响应的JSONArray,而不是JSONObject

    JSON解析中的第二个错误是您试图获取JSONArray(标记代码),这不是必需的,因为您已经有了JSONArray作为响应,您只需迭代对象,就可以获取您想要的任何值。

    问题和解决方案:

  • 检查您的logcat,它应该有,原因是您直接在主线程上调用WebAPI,从蜂巢开始是不可能实现的
    public class ParseJsonAndroidExample extends Activity {
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
    
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_parse_json_android_example);
    
    
        final Spinner output = (Spinner) findViewById(R.id.output);
        final Button bparsejson      = (Button) findViewById(R.id.bparsejson);
        String OutputData ;
        ArrayList<String> outputDataList  = new ArrayList<String>();
    
    
        /************  Static JSON data ***********/
        final String strJson = "{ "Android" :[{"id":"1",
                                          "client_name":"Glasco Smith Klin",
                                          "campaign_name":"Health Medicine Survay",
                                          "question":"MODE OF COMPLAINT CAN BE GIVEN THROUGH __________________",
                                            "option_A":"WRITTEN",
                                             "option_B":"ORAL",
                                           "option_C":"PHONE CALL",
                                            "option_D":"ALL OF THE ABOVE",
                                            "q_prefix":"GSKHMSQ"},
    
                                             {"id":"2",
                                              "client_name":"Glasco Smith Klin",
                                               "campaign_name":"Health Medicine Survay",
                                               "question":"ADDING NEW FIR CAN BE DONE FROM WHICH ROLE",
                                                "option_A":"IO",
                                                 "option_B":"TRAFFIC",
                                                 "option_C":"SHO-CRIME",
                                                 "option_D":"ADMINISTRATOR",
                                                  "q_prefix":"GSKHMJD"}] }";
    
    
        /******** Listener for button click ********/
        bparsejson.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {
    
               String OutputData = "";
               JSONObject jsonResponse;
    
               try {
    
                    /****** Creates a new JSONObject with name/value mappings from the JSON string. ********/
                    jsonResponse = new JSONObject(strJson);
    
                    /***** Returns the value mapped by name if it exists and is a JSONArray. ***/
                    /*******  Returns null otherwise.  *******/
                    JSONArray jsonMainNode = jsonResponse.optJSONArray("Android");
    
                    /*********** Process each JSON Node ************/
    
                    int lengthJsonArr = jsonMainNode.length();  
    
                    for(int i=0; i < lengthJsonArr; i++) 
                    {
                        /****** Get Object for each JSON node.***********/
                        JSONObject jsonChildNode = jsonMainNode.getJSONObject(i);
    
                        /******* Fetch node values **********/
                        int id        = Integer.parseInt(jsonChildNode.optString("id").toString());
                        String client_name   = jsonChildNode.optString("client_name").toString();
                        String campaign_name=    jsonChildNode.optString("campaign_name").toString();
                       String question= jsonChildNode.optString("question").toString();
                       String option_A= jsonChildNode.optString("option_A").toString();
    
    String option_B= jsonChildNode.optString("option_B").toString();
    String option_C= jsonChildNode.optString("option_C").toString();
     String option_D= jsonChildNode.optString("option_D").toString(); 
    String q_prefix= jsonChildNode.optString("q_prefix").toString();
    
    
                        OutputData += "Node : \n\n     "+ id +" | "
                                                            + client_name+" | "
                                                            + campaign_name+" 
                                                             + question+" | "
                                                             + option_A+" | "
                                                             + option_B+" | "
                                                             + option_C+" | "
                                                              + option_D+" | "
                                                              + q_prefix+" | " +"\n\n ";
    
    
    
    
                   }
                  outputDataList.add(OutputData);
    
    
                    /************ Show Output on Spinner **********/
    
           ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
                android.R.layout.simple_spinner_item ,outputDataList  );
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        codeSpinner.setAdapter(adapter);
    
    
    
                } catch (JSONException e) {
    
                    e.printStackTrace();
                }
    
            }
        });
     }
    }