2014-08-30 3 views
0

Я пытаюсь создать меню слайдов для android, используя этот tutorial, после чего я придумал эту ошибку, сказал, что у меня есть нулевой указатель. Ниже приведены соответствующие значения класса и logcat NavDrawerListAdapter class, NavdrawerItem и logcat. До сих пор я пытался обнаружить, что делает его нулевым и дважды проверяет учебник, но я не могу понять никакой подсказки. Буду признателен за любую помощь, спасибо.нулевой указатель при назначении адаптера списка ящиков

+0

Пожалуйста Доля NavDrawerListAdapter.java Line No .: 51 – SilentKiller

+0

Здесь 'ImageView imgIcon = (ImageView) convertView.findViewById (R.id.icon);' если комментарий этот код, точка будет на textview чуть ниже кода ImageView –

+0

может быть конвертирован в null. отлаживать и проверять пожалуйста. – SilentKiller

ответ

3

В вашем getView() метода адаптера, линия:

if(context == null) 

должен быть:

if(convertView == null) 
+1

Спасибо, я сделал очень основную ошибку. –

1

После прохождения коды и LogCat ... кажется, вы делаете ошибку в GetView () метод NavDrawerListAdapter класс.

Внутри GetView вы следующие ошибки

если (контекст == NULL) {.... ваш контекст не может быть пустым, так как при создании адаптера вы передаете контекст, потому что этого convertView не получает надувается с R.layout.drawer_list_item ... Поэтому, когда вы пытаетесь convertView.findViewById() Вы получаете исключение NullPointerException.

Так Решение является использование если (convertView == NULL) вместо если (контекст == NULL)

0

Попробуйте этот путь, надеюсь, это поможет вам решить вашу проблему ,

public class NavDrawerListAdapter extends BaseAdapter{ 
    private Context context; 
    private ArrayList<NavDrawerItem> navDrawerItems; 

    public NavDrawerListAdapter(Context context, ArrayList<NavDrawerItem> navDrawerItems){ 
     this.context = context; 
     this.navDrawerItems = navDrawerItems; 
    } 

    @Override 
    public int getCount(){ 
     return navDrawerItems.size(); 
    } 

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

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

    @Override 
    public View getView(int position, View convertView, ViewGroup parent){ 
     ViewHolder holder; 
     if(convertView == null){ 
      holder =new ViewHolder(); 
      convertView = LayoutInflater.from(context).inflate(R.layout.drawer_list_item, null); 
      holder.imgIcon = (ImageView)convertView.findViewById(R.id.icon); 
      holder.textTitle = (TextView)convertView.findViewById(R.id.title); 
      convertView.setTag(holder); 
     }else{ 
      holder = (ViewHolder)convertView.getTag(); 
     } 

     holder.textTitle.setText(navDrawerItems.get(position).getTitle()); 

     return convertView; 
    } 

    static class ViewHolder{ 
     ImageView imgIcon; 
     TextView textTitle; 
    } 
} 
Смежные вопросы