2014-02-07 21 views
0

我想在android listview上設置footerview。該列表視圖使用了一個自定義適配器,我在其中顯示了兩種類型的行,這兩種行都符合java接口。設置頁腳的代碼如下所示:ClassCastException ListView頁腳

eventsList = (ListView)view.findViewById(R.id.events_list); 

    // create view for footer 
    LL = new LinearLayout(getSherlockActivity()); 
    LL.setOrientation(LinearLayout.VERTICAL); 
    LayoutParams LLParams = new LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT); 
    LL.setLayoutParams(LLParams); 

    eventsList.addFooterView(LL, null, false); 

    // set up the array list for list rows and headers 
    items = new ArrayList<ListItem>(); 

    loadEventsData(); 

    eventsAdapter = new TwoTypeArrayAdapter(getSherlockActivity(), items); 

    eventsList.setAdapter(eventsAdapter); 

我不斷收到一個「java.lang.ClassCastException:android.app.ActionBar &的LayoutParams不能轉換到android.widget.AbsListView $的LayoutParams」。引發該錯誤在該行:

eventsList.setAdapter(eventsAdapter); 

一個ArrayAdapter定義如下:

public class TwoTypeArrayAdapter extends ArrayAdapter<ListItem> { 

    LayoutInflater mInflater; 

    public enum RowType { 
    LIST_ITEM, 
    HEADER_ITEM 
    } 

    public TwoTypeArrayAdapter(Context context, List<ListItem> items) { 
    super(context, 0, items); 

    mInflater = LayoutInflater.from(context); 
    } 

    @Override 
    public int getViewTypeCount() { 
     return RowType.values().length; 
    } 

    @Override 
    public int getItemViewType(int position) { 
     return getItem(position).getViewType(); 
    } 

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

     return getItem(position).getView(mInflater, convertView); 
    } 
} 

在此先感謝您的幫助。

+0

可以顯示TwoTypeArrayAdapter的定義 –

+0

謝謝。我已經添加了上面的適配器定義。 – Jack120

回答

0

很簡單。我剛剛在xml文件中創建了線性佈局LL,然後將它的佈局參數與它的父項匹配:

LL.setLayoutParams(ListView.LayoutParams.MATCH_PARENT,ListView.LayoutParams.WRAP_CONTENT));