2011-12-15 2 views
1

Salut je travaille sur simplement faire une simple liste je veux juste un titre et une description d'icône et de le mettre dans un fragment car il fait partie d'un viewpager mais je reçois une exception nullpointer et je peux ' t comprendre pourquoi. Mon code ressemble à ceci et toutes mes autres pages vont bien, c'est juste cette liste que je ne peux pas mettre au travail.Android Custom ArrayAdapter en Fragment

public class Test extends Fragment{ 

    View view; 
    Context context; 
    public static ListView lView; 
    public static ArrayAdapter<String> leftList; 

    public class MyCustomAdapter extends ArrayAdapter<String> { 
     public MyCustomAdapter(Context context, int resource, int textViewResourceId, String[] dayOfWeek) { 
      super(context, resource, textViewResourceId, dayOfWeek); 
     } 

     @Override 
     public View getView(int position, View convertView, ViewGroup parent) { 
      TextView label=(TextView)view.findViewById(R.id.rowTextView); 
      label.setText(DayOfWeek[position]); 
      ImageView icon=(ImageView)view.findViewById(R.id.listIcon); 
      if (DayOfWeek[position]=="Sunday"){ 
       icon.setImageResource(R.drawable.file); 
      }else{ 
       icon.setImageResource(R.drawable.icon); 
      } 
      TextView desc = (TextView)view.findViewById(R.id.description); 
      if (DayOfWeek[position]=="Sunday"){ 
       desc.setText("Description1"); 
      }else{ 
       desc.setText("desc"); 
      } 
      return view; 
     } 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     view = inflater.inflate(R.layout.leftlist, null); 
     LinearLayout pasteLayout=(LinearLayout)view.findViewById(R.id.bottomBar); 
     pasteLayout.setVisibility(LinearLayout.GONE); 
     context = getActivity(); 
     lView = (ListView) view.findViewById(R.id.ListView01); 
     Test est = new Test(); 
     Test.MyCustomAdapter teS = est.new MyCustomAdapter(context, R.layout.row, R.id.rowTextView, DayOfWeek); 
     leftList = teS; 
     lView.setAdapter(leftList); 
     return view; 
    } 


    String[] DayOfWeek = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"}; 
} 

L'erreur dans logcat

E/AndroidRuntime(1304): java.lang.NullPointerException 
E/AndroidRuntime(1304): at com.testing.Test$MyCustomAdapter.getView(Test.java:29) 
E/AndroidRuntime(1304): at android.widget.AbsListView.obtainView(AbsListView.java:1445) 
E/AndroidRuntime(1304): at android.widget.ListView.measureHeightOfChildren(ListView.java:1220) 
E/AndroidRuntime(1304): at android.widget.ListView.onMeasure(ListView.java:1131) 
E/AndroidRuntime(1304): at android.view.View.measure(View.java:8363) 
E/AndroidRuntime(1304): at android.widget.RelativeLayout.measureChild(RelativeLayout.java:566) 
E/AndroidRuntime(1304): at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:381) 
E/AndroidRuntime(1304): at android.view.View.measure(View.java:8363) 
E/AndroidRuntime(1304): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3160) 
E/AndroidRuntime(1304): at android.widget.FrameLayout.onMeasure(FrameLayout.java:250) 
E/AndroidRuntime(1304): at android.view.View.measure(View.java:8363) 
E/AndroidRuntime(1304): at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:595) 
E/AndroidRuntime(1304): at android.view.View.measure(View.java:8363) 
E/AndroidRuntime(1304): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3160) 
E/AndroidRuntime(1304): at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1017) 
E/AndroidRuntime(1304): at android.widget.LinearLayout.measureVertical(LinearLayout.java:386) 
E/AndroidRuntime(1304): at android.widget.LinearLayout.onMeasure(LinearLayout.java:309) 
E/AndroidRuntime(1304): at android.view.View.measure(View.java:8363) 
E/AndroidRuntime(1304): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3160) 
E/AndroidRuntime(1304): at android.widget.FrameLayout.onMeasure(FrameLayout.java:250) 
E/AndroidRuntime(1304): at android.view.View.measure(View.java:8363) 
E/AndroidRuntime(1304): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3160) 
E/AndroidRuntime(1304): at android.widget.FrameLayout.onMeasure(FrameLayout.java:250) 
E/AndroidRuntime(1304): at android.view.View.measure(View.java:8363) 
E/AndroidRuntime(1304): at android.view.ViewRoot.performTraversals(ViewRoot.java:841) 
E/AndroidRuntime(1304): at android.view.ViewRoot.handleMessage(ViewRoot.java:1873) 
E/AndroidRuntime(1304): at android.os.Handler.dispatchMessage(Handler.java:99) 
E/AndroidRuntime(1304): at android.os.Looper.loop(Looper.java:130) 
E/AndroidRuntime(1304): at android.app.ActivityThread.main(ActivityThread.java:3703) 
E/AndroidRuntime(1304): at java.lang.reflect.Method.invokeNative(Native Method) 
E/AndroidRuntime(1304): at java.lang.reflect.Method.invoke(Method.java:507) 
E/AndroidRuntime(1304): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841) 
E/AndroidRuntime(1304): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599) 
E/AndroidRuntime(1304): at dalvik.system.NativeStart.main(Native Method) 
W/ActivityManager( 278): Force finishing activity com.testing/.MainActivity 
W/ActivityManager( 278): Activity pause timeout for HistoryRecord{408d4540 com.testing/.MainActivity} 

Toute aide serait grandement appréciée grâce une tonne vraiment que je peux espérer obtenir ce travail je pense que je suis vraiment proche :)

Répondre

2
Vous

appelez view.findViewById mais la vue n'est pas encore instanciée. Au lieu de cela, utilisez l'inflateur de disposition qui vous est passé dans onCreateView, probablement en le transmettant au constructeur de votre adaptateur.

1

Vous avez déclaré View comme global, mais pas instancié. Vous pouvez ajouter une ligne à votre code

view = convertView 

comme la première déclaration de méthode getView de l'adaptateur ...

Ou vous pouvez utiliser convertView.findViewById