2012-04-09 226 views
2

我有一個自定義的適配器來顯示無聊的東西的列表。現在,我想添加摘要(Resumen)的最後一個項目。滾動的多個佈局崩潰的ListView

我使用兩種佈局和兩個viewholders,它還挺工作 enter image description here

的問題開始,當我向後滾動到第一個項目。當「Resumen」項目消失(最後一個)時,活動崩潰。

讓我告訴你的適配器代碼(相關線路)

public class AdapterListaDeudaCliente extends BaseAdapter 
{ 
    final private int VIEW_TYPES = 2; 
    final private int TIPO_FACTURA = 1; 
    final private int TIPO_RESUMEN = 2; 

    public int getViewTypeCount() 
    { 
     return VIEW_TYPES; 
    } 

    public int getItemViewType(int position) 
    { 
     if(position%2==0) 
      return TIPO_RESUMEN; 
     else 
      return TIPO_FACTURA; 
    } 

    public int getCount() 
    { 
     return data.length; 
    } 

    public View getView(int position, View convertView, ViewGroup parent) 
    { 
     int tipo = getItemViewType(position); 
      switch(tipo) 
      { 
       case TIPO_FACTURA: convertView = layoutInflater.inflate(R.layout.elemento_deuda_basico, null); 
               break; 
       case TIPO_RESUMEN: convertView = layoutInflater.inflate(R.layout.elemento_deuda_resumen, null); 
               break; 
      } 
     return convertView; 
    } 
} 

最後,崩潰日誌:

FATAL EXCEPTION: main 
java.lang.ArrayIndexOutOfBoundsException 
    at android.widget.AbsListView$RecycleBin.addScrapView(AbsListView.java:4078) 
    at android.widget.AbsListView.trackMotionScroll(AbsListView.java:2915) 
    at android.widget.AbsListView.onTouchEvent(AbsListView.java:2065) 
    at android.widget.ListView.onTouchEvent(ListView.java:3315) 
    at android.view.View.dispatchTouchEvent(View.java:3766) 
    at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:897) 
    at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:936) 
    at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:936) 
    at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:936) 
    at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:936) 
    at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:936) 
    at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:936) 
    at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:936) 
    at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:936) 
    at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1701) 
    at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1111) 
    at android.app.Activity.dispatchTouchEvent(Activity.java:2086) 
    at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1685) 
    at android.view.ViewRoot.handleMessage(ViewRoot.java:1785) 
    at android.os.Handler.dispatchMessage(Handler.java:99) 
    at android.os.Looper.loop(Looper.java:123) 
    at android.app.ActivityThread.main(ActivityThread.java:4635) 
    at java.lang.reflect.Method.invokeNative(Native Method) 
    at java.lang.reflect.Method.invoke(Method.java:521) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:916) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:674) 
    at dalvik.system.NativeStart.main(Native Method) 

我會懷疑是明顯的東西,如果這個代碼不完全可以工作,但只有當摘要視圖消失時纔會崩潰......我無法檢測到失敗。

謝謝!

我改變了適配器和佈局。每個佈局僅由一個純文本視圖組成。當我滾動listView時,應用程序崩潰。

這很奇怪。

更多信息:我正在使用API​​級別8和兼容包。該活動是一個FragmentActivity,我在ViewPager中使用listView。

+0

通常它會在崩潰日誌中提供一些信息,包括導致問題的代碼行,您可以發佈整個錯誤日誌嗎? – MikeIsrael 2012-04-09 13:31:26

+0

好的...我添加了整個錯誤日誌(紅色線條) – Desenfoque 2012-04-09 13:36:23

+0

仍然沒有看到任何對你的代碼的引用,幾乎總是有一個,也許是更多的紅色logcat? – MikeIsrael 2012-04-09 13:38:49

回答

5

這很奇怪......但問題就在這裏:

final private int VIEW_TYPES = 2; 
final private int TIPO_FACTURA = 1; 
final private int TIPO_RESUMEN = 2; 

我把它改爲:

final private int VIEW_TYPES = 2; 
final private int TIPO_FACTURA = 0; 
final private int TIPO_RESUMEN = 1; 

而現在它的工作原理...

我個人認爲這沒有意義...爲什麼視圖類型應該從零開始?

0

我想有一些問題,數組的長度和無數組中的項目..這是造成問題...

0

不是一個真正的答案,爲什麼你要崩潰,但它聽起來像你真正想要的是一個頁腳。見this example。這樣你就可以擺脫開關和類別代碼。請記住,您必須致電addFooterView()之前您致電setAdapter()