我想将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 {
    私有上下文mContext;
        私有视图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;
        }

    }

最佳答案

您的应用程序崩溃,因为每次迭代都将相同的tempView添加到mainLayout。我不明白你在做什么。如果要修复,则必须在每次迭代中再次对其进行充气,例如:

for(int i = 0; i

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


....

关于android - 在AsyncTask Android中的MainLayout中设置LayoutInflator,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17941139/

10-11 17:13