2016-02-05 2 views
0

Я знаю, это очень распространенная тема. Я слежу за всеми потоками и документацией об этом поведении, но любые решения работают для меня.GetView, расширенный от BaseAdapter, не работает с Runnable Task

У меня есть адаптер: ListAdapter

public class ListAdapterForFragment extends BaseAdapter { 

    NewsFragment main; 

    public ListAdapterForFragment(NewsFragment main){ 
     this.main = main; 
    } 

    @Override 
    public int getCount() { 
     return main.countries.size(); 
    } 

    @Override 
    public Object getItem(int position) { 
     return null; 
    } 

    @Override 
    public long getItemId(int position) { 
     return 0; 
    } 

    static class ViewHolderItem { 
     TextView name; 
     TextView code; 
     ImageView imageView2; 
     TextView id; 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent){ 
     ViewHolderItem holder = new ViewHolderItem(); 
     if (convertView == null) { 
      LayoutInflater inflater = (LayoutInflater) main.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      convertView = inflater.inflate(R.layout.cell, null); 

      //asigning all the holders and values 
     } 
     else 
     { 
      holder = (ViewHolderItem) convertView.getTag(); 
     } 

     //More code 

     return convertView; 
    } 

} 

MyFragment

public void onViewCreated(View v, Bundle savedInstanceState) { 
    super.onViewCreated(v, savedInstanceState); 
    //super.onPostExecute(result); 
    text.setText("hola mundo"); 

    adapter = new ListAdapterForFragment(this); 
    list.setAdapter(adapter); 

    list.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
     } 
    }); 

    Download_data download_data = new Download_data((Download_data.download_complete) this); 
    download_data.download_data_from_link("http://cloud.anda.gob.sv/sm/Home/ObtenerDenunciasNoResueltas"); 
} 

@Override 
public void get_data(String data) { 
    try { 
     JSONArray data_array = new JSONArray(data); 

     for (int i = 0; i < data_array.length(); i++) { 
      JSONObject obj = new JSONObject(data_array.get(i).toString()); 

      Den add = new Den(); 
      add.type = obj.getString("type"); 
      add.desc = obj.getString("desc"); 
      add.PhotoURL = obj.getString("URL"); 
      add.Id = Integer.parseInt(obj.getString("Id")); 
      add.Latitud = Double.parseDouble(obj.getString("Latitud")); 
      add.Longitud = Double.parseDouble(obj.getString("Longitud")); 
      countries.add(add); 
     } 

     adapter.notifyDataSetChanged(); 

    } catch (JSONException e) { 
     e.printStackTrace(); 
    } 
} 

Адаптер выполнении adapter.notifyDataSetChanged(); и в первый раз, main.countries.size(); возвращает 0, но после того, что возвращает 6 . Но метод GetView() не выполнен. Как я могу это исправить?

ответ

1

Это работает, если вы вызываете setAdapter после создания списка стран?

Код, который вы включили, не очень ясен. Есть ли там AsyncTask?

Смежные вопросы