我目前正在学习 Codelearn Twitter 教程,但我在下面的代码中收到一个空指针 - 有人可以帮助我吗?
public class TweetAdapter extends ArrayAdapter<Tweet> {
private LayoutInflater inflater;
private ArrayList<Tweet> tweetsList;
public TweetAdapter(Activity activity, List<Tweet> tweets) {
super(activity, R.layout.row_tweet, tweets);
tweetsList = (ArrayList<Tweet>) tweets;
inflater = activity.getWindow().getLayoutInflater();
}
@Override
public View getView(int position, View convertView, ViewGroup parent){
Tweet t = tweetsList.get(position);
***TextView title = (TextView) convertView.findViewById(R.id.tweetTitle);***
TextView body = (TextView) convertView.findViewById(R.id.tweetBody);
title.setText(t.getTitle());
body.setText(t.getBody());
return inflater.inflate(R.layout.row_tweet, parent, false);
}
}
Your convertView
可以为空。不能保证它不会为空。如果没有旧视图可以重用,它将为空
Change
public View getView(int position, View convertView, ViewGroup parent)
{
Tweet t = tweetsList.get(position);
***TextView title = (TextView) convertView.findViewById(R.id.tweetTitle);***
TextView body = (TextView) convertView.findViewById(R.id.tweetBody);
title.setText(t.getTitle());
body.setText(t.getBody());
return inflater.inflate(R.layout.row_tweet, parent, false);
}
to
public View getView(int position, View convertView, ViewGroup parent)
{
if(convertView==null)
convertView = inflater.inflate(R.layout.row_tweet, parent, false);
Tweet t = tweetsList.get(position);
***TextView title = (TextView) convertView.findViewById(R.id.tweetTitle);***
TextView body = (TextView) convertView.findViewById(R.id.tweetBody);
title.setText(t.getTitle());
body.setText(t.getBody());
return convertView;
}
你必须检查是否convertView
is non null
或不是,如果是null
你需要在其中膨胀你的布局。
你还应该看看ViewHolder模式 http://developer.android.com/training/improving-layouts/smooth-scrolling.html
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)