2014-04-13 4 views
0

조각에 내 사용자 지정 어댑터가있는 ListView를 표시하려하지만 표시되지 않습니다. 나는 정상적인 활동에서 사용한 코드와 동일한 코드를 사용하지만이 코드에서는 아무런 문제가 없다 ...조각에 ListView 표시 시도 중

코드는 오류를 나타내지 않지만 아무 것도 나타나지 않는다.

enter image description here

public class Amics extends Fragment { 
    ListView listView_Amics; 
    ArrayAdapter<Usuari> adapter; 
    List<Usuari> list = new ArrayList<Usuari>(); 


    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 
    StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build(); 
     StrictMode.setThreadPolicy(policy); 
     View rootView = inflater.inflate(R.layout.amics, container, false); 


     listView_Amics = (ListView) rootView.findViewById(R.id.listView_amics); 
      adapter = new MyAdapter_Amics(getActivity(),list); 
      listView_Amics.setAdapter(adapter); 

    obtenir_amics1(); // THIS FUNCTION ADD ELEMENTS TO THE LIST AND SETS ADAPTER 

     return rootView; 
    } 

    public boolean obtenir_amics1(){ 
    String data = null; // THE STRING TO SAVE HTTPOST RESPONSE 

     // HTTP POST DATA RECIEVING.. 
     List<NameValuePair> parametres = new ArrayList<NameValuePair>(); 
     parametres.add(new BasicNameValuePair("id", id)); 
     try { 
      DefaultHttpClient client = new DefaultHttpClient(); 
      HttpPost request = new HttpPost("MY_HOST"); 
      request.setEntity(new UrlEncodedFormEntity(parametres)); 
      HttpResponse response = client.execute(request); 
      HttpEntity entity = response.getEntity(); 
      data = EntityUtils.toString(entity); 
      Log.e("DADES OBTINGUDES", data); 

      try { 

       JSONArray json = new JSONArray(data); 
       int limit = 50; 
       if(json.length()<limit){limit=json.length();} 
       for (int i = 0; i < limit; i++) { 
        JSONObject obj = json.getJSONObject(i); 
        String nombre = obj.getString("usuario_two"); 
        boolean selected = false; 
        Log.e("amic:", nombre); 

       list.add(new Usuari(nombre,selected)); 


       listView_Amics.setAdapter(adapter); 

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

     } catch (ClientProtocolException e) { 
      Log.d("HTTPCLIENT", e.getLocalizedMessage()); 
     } catch (IOException e) { 
      Log.d("HTTPCLIENT", e.getLocalizedMessage()); 
     } 
     return false; 
    } 
+0

어댑터에 새 항목을 추가 한 후'notifyDataSetChanged' 메서드를 호출 해보십시오. – Fllo

+0

같은 문제가 계속 발생합니다 ..하지만 고마워요! –

+0

응용 프로그램 외부에서 스크립트 PHP를 확인 했습니까? 그것은 뭔가를 반환합니까? 아마도 관련이 없지만 AsyncTask를 만들고 onPostExecute 메서드 안에 항목을 표시해야합니다. 아마도 안드로이드는 메인 스레드에서 HTTP 요청을하는 것을 좋아하지 않습니다 .. – Fllo

답변

0

오버라이드 onResume() 방법 onResume()adapter = new MyAdapter_Amics(getActivity(),list); listView_Amics.setAdapter(adapter); obtenir_amics1(); 시프트.

+0

이걸 좋아하니? @Override \t 공개 무효 onResume (\t \t 어댑터 = 새 MyAdapter_Amics (getActivity(), list); \t \t listView_Amics.setAdapter (adapter); \t \t \t obtenir_amics1(); \t} –

+0

작동하지 않습니다. super.OnResume();을 작성해야합니다. ?? –