0

imagebutton を 2 回押して、urland 更新画面から新しい値を取得する画面を更新したいのですが、どうすればよいですか? お願い助けて。img2 ボタンを押しても画面が更新されない parseJSONData(); を更新する方法を教えてください。img2 がクリックされたときに新しい URL を使用する関数????

    public class fourthscreen extends Activity
      TextView Breakfast,Lunch,Supper;
         String SelectMenuAPI;
 String url;

          FourthcreenAdapter fthadapter;


static ArrayList<Long> Category_ID = new ArrayList<Long>();
static ArrayList<String> Category_name = new ArrayList<String>();


         public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.fourthscreen);

           url=Utils.SelectMenuAPI;

    listMainMenu = (ListView) findViewById(R.id.listfourthscrMenu);
    date_today = (TextView) findViewById(R.id.date_today);
    Breakfast = (TextView) findViewById(R.id.txtfth1);
    Lunch = (TextView) findViewById(R.id.txtfth2);
    Supper = (TextView) findViewById(R.id.txtfth3);
           fthadapter = new FourthcreenAdapter(fourthscreen.this);
    ImageView img1 = (ImageView) findViewById(R.id.imgfourth1);
    ImageView img2 = (ImageView) findViewById(R.id.imgfourth2);
    ImageView img3 = (ImageView) findViewById(R.id.imgfourth3);
       parseJSONData();

        listMainMenu.setAdapter(fthadapter);



            img2.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            url=Utils.SelectMenuAPI2;
             parseJSONData();



        }
    });

                }


 void clearData(){
        Category_ID.clear();
        Category_name.clear();

    }






                  }


 public void parseJSONData(){
       //   CategoryAPI = Utils.CategoryAPI+"?accesskey="+Utils.AccessKey;

        SelectMenuAPI = url;

            clearData();


            try {

                HttpClient client = new DefaultHttpClient();
                HttpConnectionParams.setConnectionTimeout(client.getParams(), 15000);
                HttpConnectionParams.setSoTimeout(client.getParams(), 15000);
                HttpUriRequest request = new HttpGet(SelectMenuAPI);
                HttpResponse response = client.execute(request);
                InputStream atomInputStream = response.getEntity().getContent();
                BufferedReader in = new BufferedReader(new InputStreamReader(atomInputStream));

                String line;
                String str = "";
                while ((line = in.readLine()) != null){
                    str += line;
                }


                    JSONObject json = new JSONObject(str);
                    JSONArray data = json.getJSONArray("worldpopulation");

                    for (int i = 0; i < data.length(); i++) {
                        JSONObject object = data.getJSONObject(i); 

                    //    JSONObject category = object.getJSONObject("Category");

                        Category_ID.add(Long.parseLong(object.getString("rank")));
                        Category_name.add(object.getString("name"));
                    //    Category_image.add(object.getString("url"));
                        Log.d("Category name", Category_name.get(i));

                    }


            } catch (MalformedURLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
            //  IOConnect = 1;
                e.printStackTrace();
            } catch (JSONException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }   
        }
4

3 に答える 3

0

HTTP リクエストをメイン スレッドである FourthscreenAdapter に配置しないでください。このクラスのコードは、データを取得してから Adapter の notifyDataSetChanged() メソッドを呼び出します。

于 2013-08-02T11:03:09.743 に答える