2015-09-28 56 views
-6

我在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)

+1

我需要钱,很多很多钱..! –

+1

你能详细阐述一下你的问题和你的问题吗? –

+0

这不是解决方案服务。即使您试图自己编写代码,我们也不会为您编写代码。另一方面,如果您有关于“您的”代码的问题,我们将尝试回答。但你必须先问它。 –

回答

0

解决

Implemented

import java.io.Serializable;

in Tweet.java

0

看起来像你的context变量为空,因为它从未被设置。

尝试修改您的构造函数:

public TweetAdapter(TweetListActivity ctx, List<Tweet> tweets) { 
    super(ctx, R.layout.row_tweet, tweets); 
    context=ctx; 
} 
+0

我改变了代码,按您的说法 但现在是给这个错误 java.lang.UnsupportedOperationException:addView(查看,的LayoutParams)没有在适配器视图 在 支持,如果(V = = null){ LayoutInflater inflater = LayoutInflater.from(context); View view = inflater.inflate(R.layout.row_tweet,parent); } –

+0

我回答了您的原始问题。您在最新评论中添加的代码错误是指不在原始问题中的代码(上面的代码中没有addView命令),并且可能不相关。如果您有新问题,请打开一个新问题并在其中包含相关代码。 – Kuffs

-1

检查这个链接可以帮助你:

https://github.com/codelearn-org/CodelearnTwitterApp/blob/master/src/org/codelearn/twitter/TweetAdapter.java

这里是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; 
    } 

} 
相关问题