2014-06-15 101 views
0

我创建CreateEvent活动的Android - findViewById(INT ID)始终返回null

 @Override 
     public void onClick(View v) { 
      Intent in = new Intent(UserActivity.this, CreateEvent.class); 
      startActivity(in); 
     } 
    }); 

在CreateEvent活动,我想创建ListView和这里是我为它的代码:

@Override 
public void friendsDownlaoded(ArrayList<User> friends) { 
    this.friends = friends; 
    this.adapter = new InviteFriendAdapter(getLayoutInflater()); 
    this.friendListview.setAdapter(adapter); 
    removeRoation();  
    setUpContent(); 
} 

和这里是InviteFriendAdapter的代码,它是内部类,它可以看到ArrayList的朋友:

private class InviteFriendAdapter extends BaseAdapter { 
    private LayoutInflater inflater; 

    public InviteFriendAdapter(LayoutInflater inflater) { 
     this.inflater = inflater; 
    } 

    @Override 
    public int getCount() { 
     return friends.size(); 
    } 

    @Override 
    public Object getItem(int i) { 
     return friends.get(i); 
    } 

    @Override 
    public long getItemId(int i) { 
     return i; 
    } 

    @Override 
    public View getView(int position, View myView, ViewGroup vg) { 
     FriendHolder frndHolder; 
     User user = friends.get(position); 


     if (myView == null) { 
      myView = this.inflater.inflate(R.layout.invite_friends_event_item, null,false); 
      ImageView img= (ImageView) findViewById(R.id.inviteCheckBox); 
      frndHolder = new FriendHolder(); 
      frndHolder.hisImage = (ImageView) findViewById(R.id.inviteCheckBox); 
      frndHolder.hisNumber = (TextView) findViewById(R.id.inviteHisNumber); 
      frndHolder.hisName = (TextView) findViewById(R.id.inviteHisName); 

      myView.setTag(frndHolder); 
     } else { 
      frndHolder = (FriendHolder) myView.getTag(); 
     } 


     frndHolder.hisName.setText("aa"); 
     frndHolder.hisNumber.setText("uUU"); 

     return myView; 
    } 

} 

private static class FriendHolder { 
    TextView hisName; 
    TextView hisNumber; 
    ImageView hisImage; 
} 

我已经ch ecked ArrayList的朋友,它不是null; 该程序在适配器getView()抛出NullPointException,原因是当myView == null - (ImageView)findViewById(R.id.inviteCheckBox);返回null

下面是项目的XML文件:

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

    <TextView 
     android:id="@+id/inviteHisName" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_margin="@dimen/possible_his_number_margin" 
     android:textSize="@dimen/possible_his_name_text" /> 

    <TextView 
     android:id="@+id/inviteHisNumber" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_below="@id/inviteHisName" 
     android:layout_margin="@dimen/possible_his_number_margin" 
     android:textSize="@dimen/possible_his_number_text" /> 

    <ImageView 
     android:id="@+id/inviteCheckBox" 
     android:layout_width="@dimen/smile_pic_width" 
     android:layout_height="@dimen/smile_pic_height" 
     android:layout_alignParentRight="true" 
     android:layout_alignParentTop="true" 
     android:layout_margin="@dimen/possible_check_box_margin" 
     android:contentDescription="@string/image" 
     android:scaleType="fitXY" /> 

</RelativeLayout> 

我无法找到网络解决方案。我创建了适配器几次,它运行良好,但现在.. 任何人都可以告诉我为什么findViewById()返回null? 预先感谢您

+0

nullPointexception在这里:frndHolder.hisName.setText(“aa”); becasue frndHolder.hisName为空 –

回答

1

在一个适配器getView(),呼吁视图findViewById()你膨胀,不是活动视图层次结构(如果适配器处于活性的非静态内部类)。

在您的代码中,将findViewById()替换为myView.findViewById()

+0

谢谢。我试图找到一个小时的问题。再次感谢 –