2014-02-13 4 views
0

Вот мой getChildView:держатель ExpandableListView становится нулевым

public View getChildView(int groupPosition, int childPosition, 
     boolean isLastChild, View convertView, ViewGroup parent) { 
    View v = convertView; 
    ViewHolderChild h; 
    if (v == null) { 
     h = new ViewHolderChild(); 
     switch (groupPosition) { 
     case GROUP_OVERVIEW: 
      v = inflater 
        .inflate(R.layout.adapter_show_child_overview, null); 
      h.wv_overview = (WebView) v 
        .findViewById(R.id.wv_adapter_show_child_overview); 
      h.tv_title = (TextView) v 
        .findViewById(R.id.tv_adapter_show_overview_title); 
      h.tv_date = (TextView) v 
        .findViewById(R.id.tv_adapter_show_overview_date); 
      h.tv_year = (TextView) v 
        .findViewById(R.id.tv_adapter_show_overview_year); 
      h.tv_network = (TextView) v 
        .findViewById(R.id.tv_adapter_show_overview_network); 
      h.tv_title.setTypeface(font_bold); 
      h.tv_date.setTypeface(font_thin); 
      h.tv_year.setTypeface(font_thin); 
      h.tv_network.setTypeface(font_bold); 
      v.setTag(h); 
      break; 
     case GROUP_SEASONS: 
      v = inflater.inflate(R.layout.adapter_shows_child_seasons, null); 
      h.siv = (SmartImageView) v.findViewById(R.id.siv_adapter_show_child_seasons); 
      h.tv_seasons = (TextView) v.findViewById(R.id.tv_adapter_show_child_seasons); 
      v.setTag(h); 
      break; 
     } 


    } else { 
     h = (ViewHolderChild) v.getTag(); 
    } 
    switch (groupPosition) { 
    case GROUP_OVERVIEW: 
     OverView overview = groups.get(groupPosition).getOverview(); 
     FunctionUtils.loadHtml(h.wv_overview, overview.getOverview(), 
       FunctionUtils.FONT_ROBOTO_THIN, 14); 
     h.tv_date.setText("" + overview.getAirDay() + "/" 
       + overview.getAirTime()); 
     h.tv_title.setText(overview.getTitle()); 
     h.tv_year.setText("" + overview.getYear()); 
     h.tv_network.setText("" + overview.getNetwork()); 
     break; 
    case GROUP_SEASONS: 
     SeasonObject season = groups.get(groupPosition).getSeasons().get(childPosition); 
     if(season.getImages().getPoster() != null){ 
      h.siv.setImageUrl(season.getImages().getPoster()); 
     } 
     h.tv_seasons.setText("Season : "+season.getSeason()+" Episode : "+season.getEpisodes()); 
     break; 
    } 
    return v; 
} 

Но когда я начинаю прокручивать вниз, есть проблема в этой строке: h.siv.setImageUrl(season.getImages().getPoster());

Я видел журнал и говорит ч содержит все вид из GROUP_OVERVIEW и не GROUP_SEASONS

Это вызывает NullPointerException, ExpandableListConnector getView

Her e's logcat:

02-13 22:42:11.952: E/AndroidRuntime(7832): FATAL EXCEPTION: main 
02-13 22:42:11.952: E/AndroidRuntime(7832): java.lang.NullPointerException 
02-13 22:42:11.952: E/AndroidRuntime(7832):  at com.galite.pomo.adapters.ShowAdapter.getChildView(ShowAdapter.java:117) 
02-13 22:42:11.952: E/AndroidRuntime(7832):  at android.widget.ExpandableListConnector.getView(ExpandableListConnector.java:451) 
02-13 22:42:11.952: E/AndroidRuntime(7832):  at android.widget.AbsListView.obtainView(AbsListView.java:2161) 
02-13 22:42:11.952: E/AndroidRuntime(7832):  at android.widget.ListView.makeAndAddView(ListView.java:1840) 
02-13 22:42:11.952: E/AndroidRuntime(7832):  at android.widget.ListView.fillDown(ListView.java:675) 
02-13 22:42:11.952: E/AndroidRuntime(7832):  at android.widget.ListView.fillGap(ListView.java:639) 
02-13 22:42:11.952: E/AndroidRuntime(7832):  at android.widget.AbsListView.trackMotionScroll(AbsListView.java:4970) 
02-13 22:42:11.952: E/AndroidRuntime(7832):  at android.widget.AbsListView.scrollIfNeeded(AbsListView.java:3126) 
02-13 22:42:11.952: E/AndroidRuntime(7832):  at android.widget.AbsListView.onTouchEvent(AbsListView.java:3400) 
02-13 22:42:11.952: E/AndroidRuntime(7832):  at android.view.View.dispatchTouchEvent(View.java:7384) 
02-13 22:42:11.952: E/AndroidRuntime(7832):  at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2203) 
02-13 22:42:11.952: E/AndroidRuntime(7832):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1938) 
02-13 22:42:11.952: E/AndroidRuntime(7832):  at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2209) 
02-13 22:42:11.952: E/AndroidRuntime(7832):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1952) 
02-13 22:42:11.952: E/AndroidRuntime(7832):  at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2209) 
02-13 22:42:11.952: E/AndroidRuntime(7832):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1952) 
02-13 22:42:11.952: E/AndroidRuntime(7832):  at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2209) 
02-13 22:42:11.952: E/AndroidRuntime(7832):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1952) 
02-13 22:42:11.952: E/AndroidRuntime(7832):  at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2209) 
02-13 22:42:11.952: E/AndroidRuntime(7832):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1952) 
02-13 22:42:11.952: E/AndroidRuntime(7832):  at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2209) 
02-13 22:42:11.952: E/AndroidRuntime(7832):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1952) 
02-13 22:42:11.952: E/AndroidRuntime(7832):  at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2209) 
02-13 22:42:11.952: E/AndroidRuntime(7832):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1952) 
02-13 22:42:11.952: E/AndroidRuntime(7832):  at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2209) 
02-13 22:42:11.952: E/AndroidRuntime(7832):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1952) 
02-13 22:42:11.952: E/AndroidRuntime(7832):  at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1966) 
02-13 22:42:11.952: E/AndroidRuntime(7832):  at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1418) 
02-13 22:42:11.952: E/AndroidRuntime(7832):  at android.app.Activity.dispatchTouchEvent(Activity.java:2424) 
02-13 22:42:11.952: E/AndroidRuntime(7832):  at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1914) 
02-13 22:42:11.952: E/AndroidRuntime(7832):  at android.view.View.dispatchPointerEvent(View.java:7564) 
02-13 22:42:11.952: E/AndroidRuntime(7832):  at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:3883) 
02-13 22:42:11.952: E/AndroidRuntime(7832):  at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:3778) 
02-13 22:42:11.952: E/AndroidRuntime(7832):  at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3379) 
02-13 22:42:11.952: E/AndroidRuntime(7832):  at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3429) 
02-13 22:42:11.952: E/AndroidRuntime(7832):  at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3398) 
02-13 22:42:11.952: E/AndroidRuntime(7832):  at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:3483) 
02-13 22:42:11.952: E/AndroidRuntime(7832):  at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3406) 
02-13 22:42:11.952: E/AndroidRuntime(7832):  at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:3540) 
02-13 22:42:11.952: E/AndroidRuntime(7832):  at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3379) 
02-13 22:42:11.952: E/AndroidRuntime(7832):  at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3429) 
02-13 22:42:11.952: E/AndroidRuntime(7832):  at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3398) 
02-13 22:42:11.952: E/AndroidRuntime(7832):  at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3406) 
02-13 22:42:11.952: E/AndroidRuntime(7832):  at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3379) 
02-13 22:42:11.952: E/AndroidRuntime(7832):  at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:5419) 
02-13 22:42:11.952: E/AndroidRuntime(7832):  at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:5399) 
02-13 22:42:11.952: E/AndroidRuntime(7832):  at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:5370) 
02-13 22:42:11.952: E/AndroidRuntime(7832):  at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:5493) 
02-13 22:42:11.952: E/AndroidRuntime(7832):  at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:182) 
02-13 22:42:11.952: E/AndroidRuntime(7832):  at android.view.InputEventReceiver.nativeConsumeBatchedInputEvents(Native Method) 
02-13 22:42:11.952: E/AndroidRuntime(7832):  at android.view.InputEventReceiver.consumeBatchedInputEvents(InputEventReceiver.java:174) 
02-13 22:42:11.952: E/AndroidRuntime(7832):  at android.view.ViewRootImpl.doConsumeBatchedInput(ViewRootImpl.java:5472) 
02-13 22:42:11.952: E/AndroidRuntime(7832):  at android.view.ViewRootImpl$ConsumeBatchedInputRunnable.run(ViewRootImpl.java:5512) 
02-13 22:42:11.952: E/AndroidRuntime(7832):  at android.view.Ch 

ответ

0

Поскольку вы используете два типа видов детских элементов группы. Таким образом, вы должны переопределить следующие два метода

final int CHILDVIEW_TYPE_COUNT = 2; 
@Override 
public int getChildTypeCount() { 
    return CHILDVIEW_TYPE_COUNT; 
} 

Из кода, два типа взглядов помечены вашей группы, я полагаю, что у Вас есть только две группы.

@Override 
public int getChildType(int groupPosition, int childPosition) 
{ 
    return groupPosition; 
} 
Смежные вопросы