使用数组适配器使用tweet数组填充listview

时间:2015-06-05 23:02:43

标签: java android arrays listview twitter

我正在尝试用我的推文数组填充我的listview,但是我要么抛出错误,要么启动时应用程序崩溃。任何人都可以帮助我确保我有正确的语法或让我知道我有什么不合适的地方?错误发生在我的TweetAdapter类中,并在代码中进行了注释。错误说明Cannot resolve method 'super(android.app.Activity, int, java.lang.String[])'

这是我的TweetAdapter类的代码:

import android.content.Context;
import android.widget.ArrayAdapter;
import s607central.pettastic.R;
import android.app.Activity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

import java.util.ArrayList;
import java.util.List;


public class TweetAdapter extends ArrayAdapter<Tweet> {
    private LayoutInflater inflater;
    private Context context;
    private List<Tweet> tweetList;

    public TweetAdapter(Activity activity, String[] items){  

        super(activity, R.layout.row_tweet, items); // **THIS IS THE ERROR**
        inflater = activity.getWindow().getLayoutInflater();
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent){

        if (convertView == null) {

            LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            convertView = inflater.inflate(R.layout.activity_tweet_detail, parent, false);
        }

        TextView tt = (TextView) convertView.findViewById(R.id.tweetTitle);
        TextView tb = (TextView) convertView.findViewById(R.id.tweetBody);
        Tweet t = tweetList.get(position);


        return convertView;

如果它是相关的,这是我的TweetListActivity类的代码,这里没有错误:

import android.app.Activity;
import android.app.ListActivity;
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.ListIterator;

public class TweetListActivity extends ListActivity {
    private ArrayAdapter tweetItemArrayAdapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_tweet_list);

        List<Tweet> tweets = new ArrayList<Tweet>();



        for (int i = 0; i < 20; i++) {
            Tweet tweet = new Tweet();
            tweet.setTitle("A nice header for Tweet # " + i);
            tweet.setBody("Some random body text for the tweet # " + i);
            tweets = new ArrayList<Tweet>();
            tweets.add(tweet);
        }


        tweetItemArrayAdapter = new TweetAdapter(this, new String[10]);
        setListAdapter(tweetItemArrayAdapter);
    }

    @Override
    protected void onListItemClick(ListView l, View v, int position, long id) {
        Intent intent = new Intent(this, TweetDetailActivity.class);
        startActivity(intent);
    }

}

谢谢,任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

错误告诉您您尝试呼叫的方法不存在。

我假设您正在尝试使用ArrayAdapter(Context, int, T[])构造函数。

它无效的原因是因为您使用Tweet对您的课程进行了参数设置,因此您需要传递Tweet[],而不是String[]。要么是这样,要么改变你的班级用extends ArrayAdapter<String>

来定义