Android 自定义ListView适配器上出现致命异常
我试图在ParseUser对象上实现一个搜索接口(粗略地),但遇到了问题 以下是搜索方法: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
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
来解决这个问题。首先,您在nullconvertView
上调用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);