2015-01-28 2 views
-1

Привет, у меня есть список с пользовательским адаптером ... одно изображение и два текстовых вида .... когда я прокручиваю вверх активность сбоя ...... listview привязан к фрагменту, и фрагмент attatched с активностью .....Сила активности закрывается, когда я просматриваю список просмотров

LogCat является

FATAL EXCEPTION: main 
java.lang.NullPointerException 
    at com.cuelearn.cuemathteacher.adapters.StudentsEnrollDetailCustomAdapter.getView(StudentsEnrollDetailCustomAdapter.java:64) 
    at android.widget.AbsListView.obtainView(AbsListView.java:2255) 
    at android.widget.ListView.makeAndAddView(ListView.java:1769) 
    at android.widget.ListView.fillUp(ListView.java:706) 
    at android.widget.ListView.fillGap(ListView.java:645) 
    at android.widget.AbsListView.trackMotionScroll(AbsListView.java:5040) 
    at android.widget.AbsListView.scrollIfNeeded(AbsListView.java:3197) 
    at android.widget.AbsListView.onTouchEvent(AbsListView.java:3471) 
    at android.view.View.dispatchTouchEvent(View.java:7127) 
    at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2170) 
    at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1905) 
    at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2176) 
    at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1919) 
    at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2176) 
    at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1919) 
    at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2176) 
    at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1919) 
    at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2176) 
    at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1919) 
    at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2176) 
    at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1919) 
    at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2176) 
    at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1919) 
    at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1925) 
    at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1379) 
    at android.app.Activity.dispatchTouchEvent(Activity.java:2396) 
    at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1873) 
    at android.view.View.dispatchPointerEvent(View.java:7307) 
    at android.view.ViewRootImpl.deliverPointerEvent(ViewRootImpl.java:3174) 
    at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:3119) 
    at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:4155) 
    at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:4134) 
    at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:4226) 
    at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:171) 
    at android.view.InputEventReceiver.nativeConsumeBatchedInputEvents(Native Method) 
    at android.view.InputEventReceiver.consumeBatchedInputEvents(InputEventReceiver.java:163) 
    at android.view.ViewRootImpl.doConsumeBatchedInput(ViewRootImpl.java:4205) 
    at android.view.ViewRootImpl$ConsumeBatchedInputRunnable.run(ViewRootImpl.java:4245) 
    at android.view.Choreographer$CallbackRecord.run(Choreographer.java:725) 
    at android.view.Choreographer.doCallbacks(Choreographer.java:555) 
    at android.view.Choreographer.doFrame(Choreographer.java:523) 
    at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:711) 
    at android.os.Handler.handleCallback(Handler.java:615) 
    at android.os.Handler.dispatchMessage(Handler.java:92) 
    at android.os.Looper.loop(Looper.java:137) 
    at android.app.ActivityThread.main(ActivityThread.java:4745) 
    at java.lang.reflect.Method.invokeNative(Native Method) 
    at java.lang.reflect.Method.invoke(Method.java:511) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 
    at dalvik.system.NativeStart.main(Native Method) 

и это файл пользовательского адаптера

public class StudentsEnrollDetailCustomAdapter extends ArrayAdapter<StudentInfo> { 

    Context context; 
    StudentInfo[] arr_StudentInfo; 
    static class ViewHolder{ 

     TextView tv_student_name,tv_student_class; 
     ImageView iv_student_photo; 
    } 

    public StudentsEnrollDetailCustomAdapter(Context context,StudentInfo[] arr_StudentInfo) { 
     super(context, R.layout.adapter_students_enroll_detail, arr_StudentInfo); 

     this.context = context; 
     this.arr_StudentInfo = arr_StudentInfo; 

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

     View rowView = convertView; 
     if(rowView == null){ 

      rowView = ((Activity)context).getLayoutInflater().inflate(R.layout.adapter_students_enroll_detail, null); 
      ViewHolder viewHolder = new ViewHolder(); 

      viewHolder.tv_student_name = (TextView)rowView.findViewById(R.id.firstLine); 
      viewHolder.tv_student_class = (TextView)rowView.findViewById(R.id.secondLine); 
      viewHolder.iv_student_photo = (ImageView)rowView.findViewById(R.id.icon); 


      rowView.setTag(viewHolder); 
    } 


    ViewHolder holder = (ViewHolder) rowView.getTag(); 



    StudentInfo s = arr_StudentInfo[position]; 


    if(s.getStudentStatus() == 0){ 


     holder.tv_student_name.setText(""+s.getStudentName()); 
     holder.tv_student_class.setText("Class : "+s.getStudentClass()); 
     if(s.getStudentImage() == null){ 
      holder.iv_student_photo.setImageResource(R.drawable.ic_contact_picture); 
     }else{ 
      holder.iv_student_photo.setImageBitmap(s.getStudentImage());  
     } 

     CUtils.setCustomFontNormal(context, holder.tv_student_name, CConstants.FONT_F3); 
     CUtils.setCustomFontNormal(context, holder.tv_student_class, CConstants.FONT_F4); 


    }else{ 

     rowView = ((Activity)context).getLayoutInflater().inflate(R.layout.row_null, null); 
    } 
    return rowView; 
    } 


} 

ошибки показывает в этой строке пользовательского адаптера, но нет никаких проблем ..

holder.tv_student_name.setText(""+s.getStudentName()); 
+0

Почему вы надутый 'rowView' два раза? –

+0

, потому что, когда этот метод (s.getStudentStatus()) не возвращает 0, то мне нужно скрыть этот элемент из списка ... ... а второй раздутый макет не имеет содержимого ..., содержащего только linearlayout без какого-либо дочернего элемента –

+0

@AvinashJadaun проверить обновленный ответ .. – user1140237

ответ

0

По какой-либо причине s является нулевым. Это означает, что arr_StudentInfo [position] имеет значение NULL. Что, в свою очередь, вероятно, означает, что вы не инициализировали элемент массива в этой позиции. HTH.

0

После проверки массива StudentInfor правильно заполнено или нет. В соответствии с исключением одна проблема с позицией wise, получающей значения StudentInfor.

Во-вторых: getView Способ осуществления не правильный.

, потому что, когда это() s.getStudentStatus() метод не возвращает 0 ..than я должен скрыть этот элемент из представления списка ... и второй завышены расположение не имеет содержания ... что содержит только LinearLayout без ребенка

Чем не добавить эти строки списка пункта в StudentInfo[] arr_StudentInfo, которые вы передаете в адаптере. После удаления или фильтрации передать, что и дисплей

в ниже публикуемую кода я использовал BaseAdapter как его хороший и лучший вариант, чтобы использовать адаптер для индивидуальных ListView

public class CustomAdapter extends BaseAdapter { 
    Context context; 
    StudentInfo[] arr_StudentInfo; 
    private int size = 0; 

    static class ViewHolder { 

     TextView tv_student_name, tv_student_class; 
     ImageView iv_student_photo; 
    } 

    public StudentsEnrollDetailCustomAdapter(Context context, 
      StudentInfo[] arr_StudentInfo) { 
     this.context = context; 
     this.arr_StudentInfo = arr_StudentInfo; 
     if (this.arr_StudentInfo != null) 
      size = this.arr_StudentInfo.length; 
    } 

    @Override 
    public int getCount() { 
     // TODO Auto-generated method stub 
     return size; 
    } 

    @Override 
    public StudentInfo getItem(int position) { 
     // TODO Auto-generated method stub 
     return this.arr_StudentInfo[position]; 
    } 

    @Override 
    public long getItemId(int position) { 
     // TODO Auto-generated method stub 
     return position; 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     ViewHolder viewHolder = null; 
     try { 
      if (convertView == null) { 
       convertView = LayoutInflater.from(context).inflate(
         R.layout.adapter_students_enroll_detail, null); 
       viewHolder = new ViewHolder(); 
       viewHolder.tv_student_name = (TextView) convertView 
         .findViewById(R.id.firstLine); 
       viewHolder.tv_student_class = (TextView) convertView 
         .findViewById(R.id.secondLine); 
       viewHolder.iv_student_photo = (ImageView) convertView 
         .findViewById(R.id.icon); 
       convertView.setTag(viewHolder); 
      } else { 
       holder = (ViewHolder) convertView.getTag(); 
      } 
      StudentInfo s = arr_StudentInfo[position]; 
      if (s != null) { 
       if (s.getStudentStatus() == 0) { 

        holder.tv_student_name.setText("" + s.getStudentName()); 
        holder.tv_student_class.setText("Class : " 
          + s.getStudentClass()); 
        if (s.getStudentImage() == null) { 
         holder.iv_student_photo 
           .setImageResource(R.drawable.ic_contact_picture); 
        } else { 
         holder.iv_student_photo.setImageBitmap(s 
           .getStudentImage()); 
        } 

        CUtils.setCustomFontNormal(context, holder.tv_student_name, 
          CConstants.FONT_F3); 
        CUtils.setCustomFontNormal(context, 
          holder.tv_student_class, CConstants.FONT_F4); 

       } 
      } else { 
       Toast.makeText(
         context, 
         " StudentInfo is not getting at list row position " 
           + position, Toast.LENGTH_SHORT).show(); 
      } 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
     return convertView; 
    } 
} 
+0

им реализации этого на много мест, это работает отлично ......... –

+0

@AvinashJadaun хорошо, вы думаете, что его работа прекрасна, почему эта проблема комментируется? – user1140237

Смежные вопросы