2014-12-16 4 views
0

사용자 정의 어댑터로 목록보기를 채우는 중 문제가 발생합니다. ArrayList에 저장된 Restaurant 객체의 배열이 있고 그 객체가 ArrayAdapter로 전달됩니다. 내가 ArrayAdapter의 내용을 확인하고 내가 전달한 개체가 포함되어 있습니다. 그러나 내가 가지고있는 것 같습니다 문제는 그 list.setAdapter (어댑터) 예외가 throw됩니다 호출됩니다. null 포인터 사용자 정의 어댑터로 목록보기를 채우는 중 예외가 발생했습니다.

다음 코드

내가 ListView에

private void populateListView() { 
    ArrayAdapter<Restaurants> adapter = new RestaurantsAdapter(); 
    ListView list = (ListView) findViewById(R.id.restaurantListView); 
    list.setAdapter(adapter); 
} 

이 내 사용자 정의 어댑터입니다을 채우기 위해 시도하는 방법을 보여줍니다. 목록을 표시하려고하는 활동의 내부 클래스입니다.

private class RestaurantsAdapter extends ArrayAdapter<Restaurants> { 

    public RestaurantsAdapter() { 
     super(RestaurantsList.this,R.layout.layout_of_list_view,restaurants); 
     //restaurants is an object array that is filled in the outer class 
    } 

    @Override 
    public View getView(int position, View convertView,ViewGroup parent){ 
     //this makes sure we have a view to work with 
     View v = convertView; 

     if(v == null) //create new view 
     { 
      v = getLayoutInflater().inflate(R.layout.layout_of_list_view, parent, false); 
     } 

     //populate the list 

     Restaurants r = restaurants.get(position); 

     TextView restName = (TextView) v.findViewById(R.id.restaurantName); 
     restName.setText(r.getName()); 

     TextView desc = (TextView) v.findViewById(R.id.restaurantDescription); 
     desc.setText(r.getLocation()); 

     return v; 
    } 
} 

그리고이 파일은 ListView의 각 항목을 표시하는 방법을 설명하는 XML 파일입니다.

<ImageView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/restaurantImage" 
    android:src="@drawable/ic_launcher" 
    android:layout_alignParentTop="true" 
    android:layout_alignParentStart="true" /> 

<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="New Text" 
    android:id="@+id/restaurantName" 
    android:layout_marginLeft="89dp" 
    android:layout_marginTop="12dp"/> 

<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:maxLines="4" 
    android:text="Description" 
    android:id="@+id/restaurantDescription" 
    android:layout_marginLeft="89dp" 
    android:layout_marginTop="32dp"/> 

이리스트 뷰 자체가 들어있는 XML 파일이지만

<?xml version="1.0" encoding="utf-8"?> 

.

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" android:layout_height="match_parent" 
android:clickable="false"> 

<ListView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/restaurantListView" 
    android:layout_alignParentTop="true" 
    android:layout_alignParentStart="true" /> 


</RelativeLayout> 

코드 실행시 다음과 같은 오류가 logcat에 표시됩니다. 당신이 전화 한 후, 조각에 대한 또는 Activtiy에 대한에서 onCreate() 메소드에 onActivityCreated() 메소드에

ListView list = (ListView) findViewById(R.id.restaurantListView); 
list.setAdapter(adapter); 

:

12-16 17:30:38.360 1839-1839/project.b_ourguest.bourguest W/System.err﹕ java.lang.NullPointerException 
12-16 17:30:38.360 1839-1839/project.b_ourguest.bourguest W/System.err﹕ at project.b_ourguest.bourguest.RestaurantsList.populateListView(RestaurantsList.java:90) 
12-16 17:30:38.360 1839-1839/project.b_ourguest.bourguest W/System.err﹕ at project.b_ourguest.bourguest.RestaurantsList.access$000(RestaurantsList.java:25) 
12-16 17:30:38.360 1839-1839/project.b_ourguest.bourguest W/System.err﹕ at project.b_ourguest.bourguest.RestaurantsList$1.run(RestaurantsList.java:54) 
12-16 17:30:38.360 1839-1839/project.b_ourguest.bourguest W/System.err﹕ at android.os.Handler.handleCallback(Handler.java:733) 
12-16 17:30:38.360 1839-1839/project.b_ourguest.bourguest W/System.err﹕ at android.os.Handler.dispatchMessage(Handler.java:95) 
12-16 17:30:38.360 1839-1839/project.b_ourguest.bourguest W/System.err﹕ at android.os.Looper.loop(Looper.java:136) 
12-16 17:30:38.360 1839-1839/project.b_ourguest.bourguest W/System.err﹕ at android.app.ActivityThread.main(ActivityThread.java:5017) 
12-16 17:30:38.360 1839-1839/project.b_ourguest.bourguest W/System.err﹕ at java.lang.reflect.Method.invokeNative(Native Method) 
12-16 17:30:38.360 1839-1839/project.b_ourguest.bourguest W/System.err﹕ at java.lang.reflect.Method.invoke(Method.java:515) 
12-16 17:30:38.360 1839-1839/project.b_ourguest.bourguest W/System.err﹕ at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779) 
12-16 17:30:38.360 1839-1839/project.b_ourguest.bourguest W/System.err﹕ at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) 
12-16 17:30:38.360 1839-1839/project.b_ourguest.bourguest W/System.err﹕ at dalvik.system.NativeStart.main(Native Method) 
+0

게시 된 코드에 문제가 없다고 생각합니다. – waqaslam

+0

다른 곳이 어디 있는지 모르겠습니다. 어떤 제안? –

+0

RestaurantsList는 내가 작업하고있는 활동 클래스입니다. "RestaurantsList.class"코드는 컨텍스트를 참조합니다. –

답변

0
Comment 

나는이 코드를 호출 할 필요가 있다고 생각 layout.xml 파일.

+0

문제는 목록보기를 채운 후에 콘텐츠보기를 설정한다는 것이 었습니다. 목록보기를 채우기 전에 내용보기를 설정하기 만하면 오류가 해결되었습니다. 고맙습니다. –

관련 문제