Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在getView方法中访问数组列表_Java_Android_Twitter_Getview - Fatal编程技术网

Java 如何在getView方法中访问数组列表

Java 如何在getView方法中访问数组列表,java,android,twitter,getview,Java,Android,Twitter,Getview,这是适配器代码的一部分,请帮助我如何在getView方法中访问ArrayList,以便能够修改布局文件的textview中的文本 public TweetAdapter(Activity activity,List<Tweet> tweets){ super(activity, R.layout.row_tweet, tweets); List<Tweet> myTweets=tweets; inflater=activity.getWindow

这是适配器代码的一部分,请帮助我如何在getView方法中访问ArrayList,以便能够修改布局文件的textview中的文本

public TweetAdapter(Activity activity,List<Tweet> tweets){

    super(activity, R.layout.row_tweet, tweets);
    List<Tweet> myTweets=tweets;
    inflater=activity.getWindow().getLayoutInflater();
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    // The super.getView is enough to crash the application.
    // Need to understand why it does this.
    //super.getView(position, convertView, parent);
    TextView tweetTitle=(TextView)convertView.findViewById(R.id.tvTweetTitle);
    tweetTitle.setText();

    return inflater.inflate(R.layout.row_tweet, parent, false);
}

您正在适配器的构造函数中传递列表,这意味着您在适配器中拥有该列表。更改如下:

List<Tweet> tweets;
LayoutInflater inflater;
Activity activity;
public TweetAdapter(Activity activity,List<Tweet> tweets){

//super(activity, R.layout.row_tweet, tweets);  remove this line.
this.tweets=tweets;
this.activity = activity;
 inflater=(LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

}

在构造函数中有数组列表,在getView中有位置,所以可以按如下方式访问数组列表

class TweetAdapter extends ArrayAdapter{

private ArrayList<Tweets> mTweetList;

public TweetAdapter(Activity activity, ArrayList<Tweet> tweets){
    super(activity, R.layout.row_tweet, tweets);
    mTweetList = tweets;
    inflater=activity.getWindow().getLayoutInflater();
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    String data = mTweetList.get(position);  //Access Array List
    TextView tweetTitle=(TextView)convertView.findViewById(R.id.tvTweetTitle);
    tweetTitle.setText(data);
    return inflater.inflate(R.layout.row_tweet, parent, false);
}}

您必须对行进行充气,然后从充气视图中获取TextView并设置其文本

View rowView = inflater.inflate(R.layout.row_tweet, parent, false);
TextView tweetTitle = (TextView)rowView.findViewById(R.id.tvTweetTitle);
tweetTitle.setText(data);
return rowView;

编辑:添加返回行视图,而不是再次膨胀布局并返回它。

我尝试过这样做,但是。。它不会填充数组列表中的数据

试试这个。也许对你有帮助


检查此链接,如果它有助于您:


您可以轻松地修改标题文本 比如说

 List<Tweet> myTweets;
 public TweetAdapter(Activity activity,List<Tweet> tweets)
 {

    super(activity, R.layout.row_tweet, tweets);
    myTweets = tweets;

    inflater=activity.getWindow().getLayoutInflater();
 }

 @Override
 public View getView(int position, View convertView, ViewGroup parent)  
 {
     LayoutInflater inflater = LayoutInflater.from(parent.getContext());
        convertView = inflater.inflate(R.layout.row_tweet, parent,false);
    TextView tweetTitle=(TextView)convertView.findViewById(R.id.tvTweetTitle);
    tweetTitle.setText(myTweets.get(position).title);

   return convertView;
 }
 class Tweet
 {
      String title;
      Tweet(String title)
      {
           this.title = title;
      }
 }

我对TextView-tweetTitle=TextViewconvertView.findViewByIdR.id.tvTweetTitle进行了更改;tweetTitle.SettexTweets.getposition.getTitle.toString;但它给了我一个空指针异常08-03 15:38:57.136:E/AndroidRuntime13311:at com.example.twitterapp.TweetAdapter.getViewTweetAdapter.java:49@user1187878现在检查。我尝试了上面的代码。。。我是这样做的…但是列表中的数据没有在活动中填充。。。{tweetTitle.setTextdata.getTitle;返回inflater.inflater.layout.row_tweet,parent,false;}
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;
     }

}
 List<Tweet> myTweets;
 public TweetAdapter(Activity activity,List<Tweet> tweets)
 {

    super(activity, R.layout.row_tweet, tweets);
    myTweets = tweets;

    inflater=activity.getWindow().getLayoutInflater();
 }

 @Override
 public View getView(int position, View convertView, ViewGroup parent)  
 {
     LayoutInflater inflater = LayoutInflater.from(parent.getContext());
        convertView = inflater.inflate(R.layout.row_tweet, parent,false);
    TextView tweetTitle=(TextView)convertView.findViewById(R.id.tvTweetTitle);
    tweetTitle.setText(myTweets.get(position).title);

   return convertView;
 }
 class Tweet
 {
      String title;
      Tweet(String title)
      {
           this.title = title;
      }
 }