如何使用列表并将它传递给另一个类
我在TweetAdapter.java中创建了一个自定义适配器。我写的代码为如何使用列表<data>并将它传递给另一个类
公共类TweetAdapter扩展ArrayAdapter {
private List<Tweet> tweets;
private Context context;
public TweetAdapter(TweetListActivity ctx, List<Tweet> tweets) {
super(ctx, R.layout.row_tweet, tweets);
}
@Override
public Tweet getItem(int arg0) {
return tweets.get(arg0);
}
@Override
public long getItemId(int arg0) {
return arg0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v = convertView;
if (v == null) {
LayoutInflater inflater = LayoutInflater.from(context);
View view = inflater.inflate(R.layout.row_tweet, parent);
}
LayoutInflater inflater = (LayoutInflater) context.getSystemService(context.LAYOUT_INFLATER_SERVICE);
TextView tweetTitle = (TextView) v.findViewById(R.id.tweetTitle);
TextView tweetBody = (TextView) v.findViewById(R.id.tweetBody);
final Tweet currentTweet = tweets.get(position);
String a = currentTweet.getTitle();
String b = currentTweet.getBody();
tweetTitle.setText(a);
tweetBody.setText(b);
return v;
}
}
,但得到的错误
显示java.lang.NullPointerException:试图调用虚拟方法的java.lang .Object android.content.Context.getSystemService(java.lang.String)'null对象引用
at android.view.LayoutInflater.fr om(LayoutInflater.java:219)
解决
Implemented
import java.io.Serializable;
in Tweet.java
看起来像你的context
变量为空,因为它从未被设置。
尝试修改您的构造函数:
public TweetAdapter(TweetListActivity ctx, List<Tweet> tweets) {
super(ctx, R.layout.row_tweet, tweets);
context=ctx;
}
我改变了代码,按您的说法 但现在是给这个错误 java.lang.UnsupportedOperationException:addView(查看,的LayoutParams)没有在适配器视图 在 支持,如果(V = = null){ LayoutInflater inflater = LayoutInflater.from(context); View view = inflater.inflate(R.layout.row_tweet,parent); } –
我回答了您的原始问题。您在最新评论中添加的代码错误是指不在原始问题中的代码(上面的代码中没有addView命令),并且可能不相关。如果您有新问题,请打开一个新问题并在其中包含相关代码。 – Kuffs
检查这个链接可以帮助你:
这里是relelvant部分:
public class TweetAdapter extends ArrayAdapter<Tweet> {
private LayoutInflater inflater;
private List<Tweet> tweetsLocal;
public TweetAdapter(Activity activity, List<Tweet> tweets){
super(activity, R.layout.row_tweet, tweets);
inflater = activity.getWindow().getLayoutInflater();
tweetsLocal = tweets;
}
@Override
public View getView(int position, View convertView, ViewGroup parent){
View row = inflater.inflate(R.layout.row_tweet, parent, false);
TextView title = (TextView) row.findViewById(R.id.tweetTitle);
Tweet tweet = tweetsLocal.get(position);
title.setText(tweet.getTitle());
TextView body = (TextView) row.findViewById(R.id.textView2);
body.setText(tweet.getBody());
return row;
}
}
我需要钱,很多很多钱..! –
你能详细阐述一下你的问题和你的问题吗? –
这不是解决方案服务。即使您试图自己编写代码,我们也不会为您编写代码。另一方面,如果您有关于“您的”代码的问题,我们将尝试回答。但你必须先问它。 –