在Android中创建广告视图

时间:2014-07-08 05:14:43

标签: java android json web-services

我创建了一个应用程序。在该应用中,存在广告模块。该模块分为两部分:

  1. 制作广告
  2. 查看广告
  3. 第一单元正常运作。创建广告并填写参数(例如namemobilestate)并添加add的说明后,点击发送按钮可创建广告并存储数据库中的值。该值以JSON格式存储。

    但是当我点击vies广告时,日志猫中会显示以下错误。请检查代码并告诉我哪里错了。

        07-07 04:32:12.643: W/System.err(3306):    org.json.JSONException: No value for all_advertisements
        07-07 04:32:12.653: W/System.err(3306):     at org.json.JSONObject.get(JSONObject.java:355)
        07-07 04:32:12.653: W/System.err(3306):     at org.json.JSONObject.getJSONArray(JSONObject.java:549)
        07-07 04:32:12.653: W/System.err(3306):     at com.sunmobileappnow.mobileappnow.ViewAdvertise$ViewAdvertisement.doInBackground(ViewAdvertise.java:99)
        07-07 04:32:12.653: W/System.err(3306):     at com.sunmobileappnow.mobileappnow.ViewAdvertise$ViewAdvertisement.doInBackground(ViewAdvertise.java:1)
        07-07 04:32:12.653: W/System.err(3306):     at android.os.AsyncTask$2.call(AsyncTask.java:288)
        07-07 04:32:12.653: W/System.err(3306):     at java.util.concurrent.FutureTask.run(FutureTask.java:237)
        07-07 04:32:12.653: W/System.err(3306):     at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
        07-07 04:32:12.653: W/System.err(3306):     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
        07-07 04:32:12.663: W/System.err(3306):     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
        07-07 04:32:12.663: W/System.err(3306):     at java.lang.Thread.run(Thread.java:841)
    
    
    This is my view advertisement `.java` file. In this file I have defined the four `TextView`s which displays the name, mobile, (for those we want to send the add) states (selection of the state for which add is broadcast),and description of the advertisement.
    
    `View_add` is the method used in the web services.login_token and `status_keys` is the parameter.
    
              public class ViewAdvertise extends Activity {
    
                    private SharedPreferences pref;
                    private String login_token;
                    private TextView tv1,tv2,tv3,tv4;
                    ListView list ;
                    ArrayList<String> nameArray = new ArrayList<String>();
                    ArrayList<String> mobileArray = new ArrayList<String>();
                    ArrayList<String> stateArray = new ArrayList<String>();
                    ArrayList<String> descArray = new ArrayList<String>();
                    ArrayAdapter<String> adapter ;
    
                    //ArrayList<HashMap<String, String>> adsArray = new ArrayList<HashMap<String,String>>();
    
                    protected void onCreate(Bundle savedInstanceState) {
                        super.onCreate(savedInstanceState);
                        setContentView(R.layout.view_ads);
                        pref=this.getSharedPreferences("Driver", MODE_WORLD_READABLE);
                        login_token = pref.getString("login_token","login_token"); 
                        list=(ListView) findViewById(R.id.list);   
                        tv1=(TextView) findViewById(R.id.text2);
                        tv2=(TextView) findViewById(R.id.text4);
                        tv3=(TextView) findViewById(R.id.text5);
                        tv4=(TextView) findViewById(R.id.text6);
                        new ViewAdvertisement().execute();
    
                    }
                    private class ViewAdvertisement extends AsyncTask<String, String, String[]> {
                        String mname,mobile,state,desc;
    
                        @Override
                        protected String[] doInBackground(final String... params) 
                        {
                            ConnectivityManager conMgr = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
                            if (conMgr.getActiveNetworkInfo() != null
                                    && conMgr.getActiveNetworkInfo().isAvailable()
                                    && conMgr.getActiveNetworkInfo().isConnected()) 
                            {
                                HttpClient httpclient = new DefaultHttpClient();
                                JSONObject job1= new JSONObject();
                                try 
                                {
                                    job1.put("status_key","0");
                                    job1.put("method", "view_add");
                                    job1.put("login_token", login_token);
    
                                    StringEntity se = new StringEntity(job1.toString());
    
                                    //HttpPost httppost = new HttpPost("http://suntechwebsolutions.com/clients/mobileapp_now/webservice.php");
                                     HttpPost httppost = new HttpPost("http://suntechwebsolutions.com/clients/DGCapp/webservice.php");
    
    
                                    httppost.setEntity(se);
    
                                    HttpResponse response1 = httpclient.execute(httppost);
                                    String data1 = EntityUtils.toString(response1.getEntity());
                                    System.out.println("response "+data1);
    
    
    
                                    JSONObject jo = new JSONObject(data1);
    
                                    Log.d("response", jo.toString(4));
    
                                    JSONArray jArray = jo.getJSONArray("all_advertisements");  
                                    Log.d("Array", jArray.toString(4));
    
                                /*  JSONObject adv= jo.getJSONObject("advertisement_count");  
                                    String advertisement_count = adv.getString("count(*)");
                                    System.out.print("advertisemnet"+advertisement_count);  */
    
    
                                    for (int j=0; j < jArray.length(); j++)
                                    {
                                        try {
                                            JSONObject jsob = jArray.getJSONObject(j);
    
                                            mname = jsob.getString("name");   
                                            mobile = jsob.getString("mbl_nmbr");   
                                            state = jsob.getString("states");   
                                            desc = jsob.getString("desc");   
    
    
                                            nameArray.add(jsob.getString("name").toString());
    
                                            mobileArray.add(jsob.getString("mbl_nmbr").toString());
    
                                            stateArray.add(jsob.getString("states").toString());
    
                                            descArray.add(jsob.getString("desc").toString());
    
                                            HashMap<String, String> adHash = new HashMap<String, String>();
    
                                            adHash.put("name", jsob.getString("name").toString());
    
                                            adHash.put("mbl_nmbr", jsob.getString("mbl_nmbr").toString());
    
                                            adHash.put("states", jsob.getString("states").toString());
    
                                            adHash.put("desc", jsob.getString("desc").toString());
    
                                            //adsArray.add(adHash);
    
                                            //     adapter = new ArrayAdapter<String>(ViewAdvertise.this, R.layout.listrow, stateArray);     
    
                                        } 
                                        catch (JSONException e) 
                                        {
                                            e.printStackTrace();
                                        } 
    
                                    }
    
    
                                }
                                catch (Exception e) 
                                {
                                    e.printStackTrace();
                                }
                            }
                            else
                            {
                                final AlertDialog.Builder alert = new AlertDialog.Builder(ViewAdvertise.this);
                                alert.setTitle("Alert !");
                                alert.setMessage("No Internet connection ");
                                alert.setPositiveButton("Ok",
                                        new DialogInterface.OnClickListener() {
                                    public void onClick(DialogInterface dialog,
                                            int whichButton) 
                                    {
                                        dialog.dismiss();
    
    
                                    }
                                });
                                runOnUiThread(new Runnable() 
                                {
                                    public void run() 
                                    {
                                        //pDialog.dismiss();
                                        alert.show();
                                    }
                                });
                            }
    
                            return params;
    
                        }             
    
                        @SuppressLint("NewApi")
                        @Override
                        protected void onPostExecute(String[] result) 
                        {
    
    
                            super.onPostExecute(result);
                            //  adapter.clear();
                            /*adapter.notifyDataSetChanged();  */
                            //  adapter.clear();
                            adapter = new ArrayAdapter<String>(ViewAdvertise.this, R.layout.listrow, stateArray);   
    
                            list.setAdapter(adapter);   
    
                            adapter.notifyDataSetChanged();
    
    
    
                            //  adapter.addAll(stateArray);
    
    
    
                            /*tv1.setText(desc);
                            tv2.setText(mname);
                            tv3.setText(mobile);
                            tv4.setText(state);*/
    
                            System.out.print("Original contents of al: ");
                            Iterator<String> itr = nameArray.iterator();
                            while (itr.hasNext()) {
                                String element = itr.next();
                                System.out.print(element + " ");
                            }
                            System.out.println();   
    
    
                            System.out.print("Original contents of al: ");
                            Iterator<String> itr1 = stateArray.iterator();
                            while (itr.hasNext()) {
                                String element = itr1.next();
                                System.out.print(element + " ");
                            }
                            System.out.println();   
                            //  ListView lv = getListView();
    
                            // listening to single list item on click
                            list.setOnItemClickListener(new OnItemClickListener() {
                                int position;
    
                                public void onItemClick(AdapterView<?> parent, View view,
                                        int position, long id) {
    
                                    // selected item 
                                    // String product = ((TextView) view).getText().toString();
                                    long index = parent.getSelectedItemId();
                                    this.position=position;
                                    // Launching new Activity on selecting single List Item
                                    Intent i = new Intent(getApplicationContext(), ViewAds.class);
                                    // sending data to new activity
    
                                    i.putStringArrayListExtra("nameArray", nameArray);
                                    i.putStringArrayListExtra("mobileArray", mobileArray);
                                    i.putStringArrayListExtra("stateArray", stateArray);
                                    i.putStringArrayListExtra("descArray", descArray);
    
                                    //i.putExtra("adArray", adsArray);
    
                                    i.putExtra("position", position);
                                    startActivity(i);
    
                                }
                            });
                        }
                    }
                }
    
    
    log cat Response
    
        07-08 01:19:39.547: D/response(1434): {
        07-08 01:19:39.547: D/response(1434):     "data": [
        07-08 01:19:39.547: D/response(1434):         {
        07-08 01:19:39.547: D/response(1434):             "id": "53",
        07-08 01:19:39.547: D/response(1434):             "desc": "",
        07-08 01:19:39.547: D/response(1434):             "status": "2",
        07-08 01:19:39.547: D/response(1434):             "name": "vivek",
        07-08 01:19:39.547: D/response(1434):             "states": "",
        07-08 01:19:39.547: D/response(1434):             "mbl_nmbr": "",
        07-08 01:19:39.547: D/response(1434):             "user_id": "45",
        07-08 01:19:39.547: D/response(1434):             "date_time": "2014-07-07 05:16:29"
        07-08 01:19:39.547: D/response(1434):         }
        07-08 01:19:39.547: D/response(1434):     ],
        07-08 01:19:39.547: D/response(1434):     "err-code": "0"
        07-08 01:19:39.547: D/response(1434): }
    

1 个答案:

答案 0 :(得分:0)

试试这个..

改变这个..

JSONArray jArray = jo.getJSONArray("all_advertisements");  

JSONArray jArray = jo.getJSONArray("data");  

因为您的JSONArray密钥是数据而不是 all_advertisements 所以更改它。