2013-07-28 2 views
1

У меня есть 2 пользовательских списка, которые я использую для отображения разных категорий. Однако, когда создается второй список, я получаю это NullPointerException при возврате с getView. Я не могу понять причину этого.getView nullPointerException для пользовательского списка Просмотр Android

Вот код:

CustomListAdapter:

public class CustomListAdapter extends ArrayAdapter<String>{ 

    Context context; 
    String[] stringList; 
    TextView medium, small; 


    public CustomListAdapter (Context con, String[] sL) 
    { 
     super(con, R.layout.my_list, R.id.mediumTextInList, sL); 
     context = con; 

     stringList = sL; 


    } 

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



     LayoutInflater inflator = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

     View newRowView = inflator.inflate(R.layout.my_list, parent,false); 


     medium = (TextView) newRowView.findViewById(R.id.mediumTextInList); 
     small = (TextView) newRowView.findViewById(R.id.smallText); 

     medium.setText(stringList[position]); 

     return super.getView(position, newRowView, parent); 
    } 

}

ListActivity:

@Override 
protected void onListItemClick(ListView l, View v, int position, long id) { 
    super.onListItemClick(l, v, position, id); 

     Bundle myBasket = new Bundle(); 

     myBasket.putString("name", categoryName); 

     Intent myIntent = new Intent(myFirstList.this, mySecondList.class); 

     myIntent.putExtras(myBasket); 
     startActivity(intent); 
} 

StackTrace:

07-28 17:04:46.551: E/AndroidRuntime(2290): FATAL EXCEPTION: main 
07-28 17:04:46.551: E/AndroidRuntime(2290): java.lang.NullPointerException 
07-28 17:04:46.551: E/AndroidRuntime(2290):  at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:355) 
07-28 17:04:46.551: E/AndroidRuntime(2290):  at android.widget.ArrayAdapter.getView(ArrayAdapter.java:323) 
07-28 17:04:46.551: E/AndroidRuntime(2290):  at com.umer.androiduetproject.CustomListAdapterForDeptAndSemesters.getView(CustomListAdapterForDeptAndSemesters.java:53) 
07-28 17:04:46.551: E/AndroidRuntime(2290):  at android.widget.AbsListView.obtainView(AbsListView.java:1430) 
07-28 17:04:46.551: E/AndroidRuntime(2290):  at android.widget.ListView.makeAndAddView(ListView.java:1745) 
07-28 17:04:46.551: E/AndroidRuntime(2290):  at android.widget.ListView.fillDown(ListView.java:670) 
07-28 17:04:46.551: E/AndroidRuntime(2290):  at android.widget.ListView.fillFromTop(ListView.java:727) 
07-28 17:04:46.551: E/AndroidRuntime(2290):  at android.widget.ListView.layoutChildren(ListView.java:1584) 
07-28 17:04:46.551: E/AndroidRuntime(2290):  at android.widget.AbsListView.onLayout(AbsListView.java:1260) 
07-28 17:04:46.551: E/AndroidRuntime(2290):  at android.view.View.layout(View.java:7175) 
07-28 17:04:46.551: E/AndroidRuntime(2290):  at android.widget.FrameLayout.onLayout(FrameLayout.java:338) 
07-28 17:04:46.551: E/AndroidRuntime(2290):  at android.view.View.layout(View.java:7175) 
07-28 17:04:46.551: E/AndroidRuntime(2290):  at android.widget.FrameLayout.onLayout(FrameLayout.java:338) 
07-28 17:04:46.551: E/AndroidRuntime(2290):  at android.view.View.layout(View.java:7175) 
07-28 17:04:46.551: E/AndroidRuntime(2290):  at android.view.ViewRoot.performTraversals(ViewRoot.java:1140) 
07-28 17:04:46.551: E/AndroidRuntime(2290):  at android.view.ViewRoot.handleMessage(ViewRoot.java:1859) 

С уважением

+1

Отладочная линия 53 вашего класса CustomListAdapterForDeptAndSemesters. – robotoaster

ответ

2

Вы не должны называть super.getView, просто вернуть newRowView.

+0

Когда мы должны вернуть super.getView(), и когда мы должны вернуть только getView –

+1

, если вы хотите надуть самостоятельно, не называйте супер. особенно если вы хотите присвоить значения пользовательским представлениям листа – robotoaster

0

Есть ли значение null в stringList? Метод toString() можно назвать в super.getView().

0

Вы можете использовать этот способ.

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

    ViewHolder holder; 
    View newRowView = convertView; 

    if (convertView == null) { 
     LayoutInflater inflator = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

     newRowView = inflator.inflate(R.layout.my_list, parent,false); 
     holder = new ViewHolder(); 
     holder.medium = (TextView) newRowView.findViewById(R.id.mediumTextInList); 
     holder.small = (TextView) newRowView.findViewById(R.id.smallText); 

     newRowView .setTag(holder); 
     } 

    else { 

      holder = (ViewHolder) newRowView .getTag(); 
      } 

     holder.medium.setText(stringList[position]); 

     return newRowView ; 
    } 
Смежные вопросы