Java 如何在getView方法中访问数组列表
这是适配器代码的一部分,请帮助我如何在getView方法中访问ArrayList,以便能够修改布局文件的textview中的文本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
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;
}
}