0

我有一個擴展底座適配器,適配器,但我不知道爲什麼它總是返回空指針異常,我不知道爲什麼... 這裏是我的代碼:getView的NullPointerException適配器

public class MembersAdapter extends BaseAdapter { 

    private static LayoutInflater inflater = null; 
    private Activity activity; 
    private ArrayList<UserInfoVO> data; 

    public MembersAdapter(Activity a, ArrayList<UserInfoVO> data) { 
     activity = a; 

     this.data = data; 
     inflater = (LayoutInflater) activity 
       .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

    } 

    public int getCount() { 
     return data.size(); 
    } 

    public Object getItem(int position) { 
     return position; 
    } 

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

    public View getView(final int position, View convertView, 
         final ViewGroup parent) { 
     View vi = convertView; 
     ViewHolder holder; 
     if (convertView == null) { 
      convertView = inflater.inflate(R.layout.members_list_item, null); 
      holder = new ViewHolder(); 
      holder.userImage = (CXRemoteImageView) convertView.findViewById(R.id.members_item_pic); 

      holder.title = (TextView) convertView.findViewById(R.id.members_item_title); 
      holder.small_text = (TextView) convertView.findViewById(R.id.members_item_small_text); 

      convertView.setTag(holder); 
     } else { 
      holder = (ViewHolder) convertView.getTag(); 
     } 
     Log.v("mtag","The url ="+data.get(position).getPictureUrl()); 
     holder.userImage.loadImmediate(data.get(position).getPictureUrl()); 
     holder.title.setText(data.get(position).getName()); 
     holder.small_text.setText(data.get(position).getAboutMe()); 

     return vi; 
    } 

    static class ViewHolder { 
     public CXRemoteImageView userImage; 
     public TextView title; 
     public TextView small_text; 
    } 

} 

,我看到在日誌中,所有數據都傳遞給適配器,但爲什麼我會遇到這個問題。

而且,這裏是我的logcat輸出:

致命異常:主要

java.lang.NullPointerException 
      at com.example.adapters.MembersAdapter.getView(MembersAdapter.java:69) 
      at android.widget.AbsListView.obtainView(AbsListView.java:2040) 
      at android.widget.ListView.makeAndAddView(ListView.java:1772) 
      at android.widget.ListView.fillDown(ListView.java:672) 
      at android.widget.ListView.fillFromTop(ListView.java:732) 
      at android.widget.ListView.layoutChildren(ListView.java:1625) 
      at android.widget.AbsListView.onLayout(AbsListView.java:1870) 
      at android.view.View.layout(View.java:11418) 
      at android.view.ViewGroup.layout(ViewGroup.java:4328) 
      at android.widget.FrameLayout.onLayout(FrameLayout.java:443) 
      at android.view.View.layout(View.java:11418) 
      at android.view.ViewGroup.layout(ViewGroup.java:4328) 
      at android.support.v4.view.ViewPager.onLayout(ViewPager.java:1594) 
      at android.view.View.layout(View.java:11418) 
      at android.view.ViewGroup.layout(ViewGroup.java:4328) 
      at android.widget.RelativeLayout.onLayout(RelativeLayout.java:930) 
      at android.view.View.layout(View.java:11418) 
      at android.view.ViewGroup.layout(ViewGroup.java:4328) 
      at android.widget.FrameLayout.onLayout(FrameLayout.java:443) 
      at android.view.View.layout(View.java:11418) 
      at android.view.ViewGroup.layout(ViewGroup.java:4328) 
      at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1652) 
      at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1510) 
      at android.widget.LinearLayout.onLayout(LinearLayout.java:1415) 
      at android.view.View.layout(View.java:11418) 
      at android.view.ViewGroup.layout(ViewGroup.java:4328) 
      at android.widget.FrameLayout.onLayout(FrameLayout.java:443) 
      at android.view.View.layout(View.java:11418) 
      at android.view.ViewGroup.layout(ViewGroup.java:4328) 
      at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1489) 
      at android.view.ViewRootImpl.handleMessage(ViewRootImpl.java:2442) 
      at android.os.Handler.dispatchMessage(Handler.java:99) 
      at android.os.Looper.loop(Looper.java:137) 
      at android.app.ActivityThread.main(ActivityThread.java:4441) 
      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:784) 
      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 
      at dalvik.system.NativeStart.main(Native Method) 

線69是這樣的一個holder.userImage.loadImmediate(data.get(position).getPictureUrl()); 注:當我看到它的返回NullPointerException異常上設置圖像源,或文本時TextView中。

,這裏是我的XML佈局:

<?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:orientation="vertical"> 

    <com.clipix.clipix.views.CXRemoteImageView 
     android:id="@+id/community_clips_item_pic" 
     android:layout_width="100dp" 
     android:layout_height="100dp" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentStart="true" 
     android:layout_centerVertical="true" 
     android:layout_marginRight="10dp" 
     android:src="@drawable/default_user_image" /> 

    <TextView 
     android:id="@+id/community_clips_item_title" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignTop="@+id/community_clips_item_pic" 
     android:layout_marginBottom="5dp" 
     android:layout_toEndOf="@+id/community_clips_item_pic" 
     android:layout_toRightOf="@+id/community_clips_item_pic" 
     android:text="New Text" /> 

    <TextView 
     android:id="@+id/community_clips_item_small_text" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_toEndOf="@+id/community_clips_item_pic" 
     android:text="Small Text" 
     android:textAppearance="?android:attr/textAppearanceSmall" 
     android:textSize="12sp" 
     android:layout_centerVertical="true" 
     android:layout_toRightOf="@+id/community_clips_item_pic" /> 

</RelativeLayout> 
+0

'line:69'中有什麼?同時發佈你的'members_list_item.xml' – VenomVendor 2014-11-03 17:51:07

+0

你也可能會返回空值('return vi'),儘管這個NPE本身就在'getView()'中。重新生成空值後會導致NPE。 – laalto 2014-11-03 17:52:55

+0

@laato你能解釋一下嗎? – 2014-11-03 17:53:39

回答

1

您的佈局和代碼中的視圖ID是不同的。例如community_clips_item_picmembers_item_pic。因此findViewById()返回null,並且您的查看持有者使用空值進行初始化。

此外,適配器getView()必須始終返回非空View。考慮返回convertView,而不是vi可以被初始化爲空。

+0

感謝您的解決方案,我不知道我怎麼沒有看到:)無論如何即時獲取新的isssue現在,任何想法:'java.lang.NullPointerException at android.widget.ListView.setupChild(ListView.java:1797) at android.widget.ListView.makeAndAddView( ListView.java:1775)' – 2014-11-03 18:06:18

+0

當你從適配器'getView()'返回'null'時,這就是錯誤(其中之一)。 – laalto 2014-11-03 18:08:39

+0

任何想法我怎麼能解決這個 - 相同的代碼? – 2014-11-03 18:09:54

0

你的觀點的XML好好嘗試一下包含ID用你使用:

members_item_pic, members_item_small_text, members_item_title. 

您使用

community_clips_item_small_text,community_clips_item_title,community_clips_item_pic 

相反..

Chan ge your id and you will solve the problem

相關問題