Android 自定义ListView适配器上出现致命异常

Android 自定义ListView适配器上出现致命异常,android,listview,parse-platform,adapter,Android,Listview,Parse Platform,Adapter,我试图在ParseUser对象上实现一个搜索接口(粗略地),但遇到了问题 以下是搜索方法: private void QueryUser() { FlatEditText gUname; gUname = (FlatEditText)findViewById(R.id.search_editText); String gUsername = gUname.getText().toString(); Log.d("singleTune", "Check for

我试图在ParseUser对象上实现一个搜索接口(粗略地),但遇到了问题

以下是搜索方法:

private void QueryUser() {
    FlatEditText gUname;
    gUname = (FlatEditText)findViewById(R.id.search_editText);

    String gUsername = gUname.getText().toString();

    Log.d("singleTune", "Check for "+gUsername);
    ParseQuery<ParseUser> query = ParseUser.getQuery();
    query.whereEqualTo("username", gUsername);
    query.orderByAscending(ParseConstants.KEY_USERNAME);
    query.setLimit(1000);
    query.findInBackground(new FindCallback<ParseUser>() {
        @Override
        public void done(List<ParseUser> users, ParseException e) {
            if(e != null){
                Log.d("singleTune", "Nothing found");
            }else{
                mUsers = users;
                String[] usernames = new String[mUsers.size()];
                int i = 0;
                for(ParseUser user : mUsers){
                    usernames[i] = user.getUsername();
                    i++;
                }
                UserListAdapter adapter = new UserListAdapter(SearchActivity.this, mUsers);
                setListAdapter(adapter);
            }

        }
    });
}

我被难倒了。有什么帮助吗?

请考虑
convertView
为空时的情况<代码>行视图将被分配相同的值(null),因此如果块,您将输入此

View rowView = convertView;
ViewHolder holder;

if (rowView == null){
    rowView = LayoutInflater.from(mContext).inflate(R.layout.user_item, null);
    holder = new ViewHolder();
    holder.avatar = (ImageView)convertView.findViewById(R.id.user_imageView);
    holder.usernameLabel = (TextView)convertView.findViewById(R.id.username_textView);
    holder.followButton = (FlatButton)convertView.findViewById(R.id.item_follow_button);
}

您为
rowView
分配了一个值,但此时convertView仍然指向
null
。这可能就是您遇到异常的地方。您可以在
rowView
上调用
findViewById
来解决这个问题。

首先,您在null
convertView
上调用
findViewById()
,而不是最近膨胀的
rowView

您还忘记使用
setTag()
存储视图持有者对象。加

rowView.setTag(holder);

if(rowView==null)
块。

哪一行是UserListAdapter.java:43?@MrSmith下次发布日志时,请尊重其格式…@shschneider谢谢,我会记住这一点
View rowView = convertView;
ViewHolder holder;

if (rowView == null){
    rowView = LayoutInflater.from(mContext).inflate(R.layout.user_item, null);
    holder = new ViewHolder();
    holder.avatar = (ImageView)convertView.findViewById(R.id.user_imageView);
    holder.usernameLabel = (TextView)convertView.findViewById(R.id.username_textView);
    holder.followButton = (FlatButton)convertView.findViewById(R.id.item_follow_button);
}
rowView.setTag(holder);