2014-09-02 3 views
0

J'ai déjà vu plein de questions mais je n'ai pas trouvé de solution! Qu'est-ce que je fais mal? Pourquoi getView n'est jamais appelé ?!SherlockFragment et BaseAdapter: ne jamais appeler getView et getItem

Here`s mon adaptateur:

public class ConteudoAdapter<T extends IProgramacao> extends BaseAdapter { 
    private Context context; 
    private List<T> list; 
    private int resourceId; 


    public ConteudoAdapter(Context context, int resourceId, List<T> list){ 
     this.context = context; 
     this.list = list; 
     this.resourceId = resourceId; 
    } 

    @Override 
    public int getCount() { 
     Log.v("test", "Returning count " + (this.list.size() != 0 ? this.list.size() : 0)); 
     return list.size(); 
    } 

    @Override 
    public Object getItem(int position) { 
     return list.get(position); 
    } 

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

    @Override 
    public View getView(int position, View view, ViewGroup parent) { 

      View row = view; 
      ViewHolder holder = null; 
      T entidade = list.get(position); 

      if(row == null) 
      { 
       LayoutInflater inflater = ((Activity) context).getLayoutInflater(); 
       row = inflater.inflate(resourceId, parent, false); 

       holder = new ViewHolder();   

       holder.tvTitle = (TextView) row.findViewById(R.id.tvTitle); 
       holder.tvTitle.setText(entidade.getTitulo()); 

       holder.tvConteudo = (TextView) row.findViewById(R.id.tvConteudo); 
       holder.tvConteudo.setText(entidade.getChamada()); 

       row.setTag(holder); 
      } 

     // holder.ivImg = (ImageView) layout.findViewById(R.id.nivImg); 
     // holder.ivImg.setImageResource(entidade.); 


     // IMAGE VIEW 
     //  holder.ivImg.setVisibility(View.VISIBLE); 
     // il.get(list.get(position).getUrlImage(), il.getImageListener(holder.ivImg, R.drawable.load, R.drawable.error)); 

     //tvTitle.setText(entidade.getTitulo()); 

     return view; 
    } 

    public static class ViewHolder{ 
     //public NetworkImageView nivImg; 
     //public ImageView ivImg; 
     public TextView tvTitle; 
     public TextView tvConteudo; 

    } 
    } 

Here`s comment j'appelle mon adaptateur (à l'intérieur d'un AsyncTask parce im obtenir des valeurs de web (JSON):

public class CategoriaEventoFragment extends SherlockFragment { 

    private View rootView; 
    private EventoBO evento; 
    private ListView lv; 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 

      rootView = (View) inflater.inflate(R.layout.categoria, container, false); 

      CarregaDadosCategoriaEventoCaller carregaDadosCategoriaEventoCaller = new CarregaDadosCategoriaEventoCaller(); 
      carregaDadosCategoriaEventoCaller.execute((Void[]) null); 

     return super.onCreateView(inflater, container, savedInstanceState); 
    } 

    public class CarregaDadosCategoriaEventoCaller extends AsyncTask<Void, Void, Void> { 

     @Override 
     protected Void doInBackground(Void... params) { 
      // TODO Auto-generated method stub 

      evento = new EventoBO("http://urlhere"); 
      evento.popularListaImagemChamada("http://urlhere"); 

      return null; 
     } 

     @Override 
     protected void onPostExecute(Void result) { 
      // TODO Auto-generated method stub 

      lv = (ListView) rootView.findViewById(R.id.listViewCategoria); 

      lv.setAdapter(new ConteudoAdapter<Evento>(rootView.getContext(), R.layout.item, evento.getLista())); 

     } 
    } 

    } 


    } 

fichiers XML:

item.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:background="@drawable/home_bg_branco" 
    android:orientation="horizontal" > 

    <TextView 
     android:id="@+id/tvTitle" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" /> 

    <TextView 
     android:id="@+id/tvConteudo" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" /> 

</LinearLayout> 

categoria.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:orientation="vertical" > 

    <ListView 
     android:id="@+id/listViewCategoria" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:background="@drawable/home_bg_branco" > 
    </ListView> 

</LinearLayout> 

Mes LogCat retour pour mon essai verbeux:

09-02 17:13:27.322: V/test(24961): Returning count 5 
09-02 17:13:27.322: V/test(24961): Returning count 5 

Merci d'avance !!!

Répondre

2

Dans onCreateView() vous devriez retourner le rootView au lieu du super.

+0

Man, vous avez résolu mon problème. Si je pouvais vous mettre en colère! J'étais tellement f. muet –

+0

Pas de problème. Cliquez simplement sur la coche pour accepter ma réponse. –

Questions connexes