2014-09-02 29 views
0

我已經看到了一堆問題,但我沒有找到解決方案!什麼即時做錯了?爲什麼getView永遠不會被調用?!SherlockFragment和BaseAdapter:永遠不會調用getView和getItem

Here`s我的適配器:

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我怎麼稱呼我的適配器(的AsyncTask裏面,因爲從IM網絡(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())); 

     } 
    } 

    } 


    } 

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> 

我的logcat返回此爲我詳細測試:

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

在此先感謝!

回答

2

onCreateView()你應該返回rootView而不是超級。

+0

男人,你解決了我的問題。如果我可以upvote你!我正在如此f。愚蠢的 – 2014-09-03 14:11:40

+0

沒有問題。只需點擊複選標記接受我的回答。 – 2014-09-03 15:27:24

相關問題