在AsyncTask Android中的MainLayout中设置LayoutInflator

时间:2013-07-30 07:46:35

标签: android

我想在我的主视图中添加Layout Inflator,但不添加。和我的应用程序崩溃。

这是我的代码:

mainLayout = (LinearLayout) findViewById(R.id.user_list);
        li =  (LayoutInflater)getApplicationContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        tempView = li.inflate(R.layout.user_rev_listitem, null);

私有类MyTask扩展AsyncTask {     private Context mContext;         private View rootView;

    public MyTask(Context applicationContext, View tempView) {
        // TODO Auto-generated constructor stub
        this.mContext=applicationContext;
        this.rootView=tempView;

    }

    @Override
    protected void onPostExecute(String result) {


        tareef_nm = (TextView) rootView.findViewById(R.id.tareef_name);
        tareef_des = (TextView) rootView.findViewById(R.id.tareef);

        for (int i = 0; i < myList.size();  i++){


            JSONObject p = myList.get(i);



            try {

                tareef_nm.setText(p.getString(TAG_UserName));
                tareef_des.setText(p.getString(TAG_UserReviews));



            } catch (JSONException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }




            mainLayout.addView(tempView);


        } 



        super.onPostExecute(result);
        }

        @Override
        protected void onPreExecute() {
            // TODO Auto-generated method stub




            super.onPreExecute();
        }

        @Override
        protected void onProgressUpdate(Integer... values) {
            // TODO Auto-generated method stub
            super.onProgressUpdate(values);

        }

        @Override
        protected String doInBackground(String... params) {


            String myRespone = null;
            String url = params[0];
            HttpClient client = new DefaultHttpClient();

            HttpGet Get = new HttpGet(url);

            try {
                HttpResponse response = client.execute(Get);

                HttpEntity entity = response.getEntity();
                myRespone = EntityUtils.toString(entity);

            } catch (ClientProtocolException e) {

                e.printStackTrace();

                Log.e("My webservice Response", "ClientProtocolException");

            } catch (IOException e) {

                Log.e("My webservice Response", "IOException");

                e.printStackTrace();
            }
            JSONObject jsonObj;

            if (myRespone != null) {
                try {



                    jsonObj = new JSONObject(myRespone);
                    JSONArray jsonArray = jsonObj.getJSONArray("Results");


                    for (int i = 0; i <= jsonArray.length() - 1; i++) {
                        myList.add(jsonArray.getJSONObject(i));

                    }



                } catch (Exception e) {
                    e.printStackTrace();
                }
            } else {
                // do nothing
            }
            return null;
        }

    }

1 个答案:

答案 0 :(得分:1)

您的应用程序崩溃是因为您在每次迭代时都将tempView添加到mainLayout。我无法理解你要做什么。如果你想修复,在每次迭代时你都需要再次充气,例如:

for(int i = 0; i&lt; myList.size(); i ++){

        tempView = li.inflate(R.layout.user_rev_listitem, null);
        JSONObject p = myList.get(i);

...