1

メイン ビューに 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);

private class MyTask extends AsyncTask { private Context 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;
        }

    }
4

1 に答える 1

1

繰り返しごとに同じtempView, を に追加しているため、アプリケーションがクラッシュしますmainLayout。あなたが何をしようとしているのか理解できません。修正したい場合は、反復ごとに再度膨らませる必要があります。たとえば、次のようになります。

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

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

....

于 2013-07-30T07:51:08.150 に答える