我有一个包含一些推文的ArrayList<String> statusListTextOnly;
。
现在,如果我像这样使用它
i.setAdapter(new ArrayAdapter<String>(MainActivity.this,
android.R.layout.simple_list_item_1, statusListTextOnly));
一切都很好,活动开始,推文在listview中显示。
但是我想深入了解我的应用,我想使用自定义适配器。
所以我做了:
Tweet[] tweets;
TweetAdapter adapter;
Tweet weather_data[] = new Tweet[] {
new Tweet(statusListTextOnly)
};
adapter = new TweetAdapter(MainAcitivity.this,
R.layout.listview_item_row, weather_data);
i.setAdapter(adapter);
我的推文:
public class Tweet {
public String title;
public Tweet(){
super();
}
public Tweet(ArrayList<String> title) {
super();
for(String s : title)
this.title = s;
}
}
我的TweetAdapter课程:
public class TweetAdapter extends ArrayAdapter<Tweet>{
Context context;
int layoutResourceId;
Tweet data[] = null;
public TweetAdapter(Context context, int layoutResourceId, Tweet[] data) {
super(context, layoutResourceId, data);
this.layoutResourceId = layoutResourceId;
this.context = context;
this.data = data;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View row = convertView;
TweetHolder holder = null;
if(row == null)
{
LayoutInflater inflater = ((Activity)context).getLayoutInflater();
row = inflater.inflate(layoutResourceId, parent, false);
holder = new TweetHolder();
holder.txtTitle = (TextView)row.findViewById(R.id.textView1);
row.setTag(holder);
}
else
{
holder = (TweetHolder)row.getTag();
}
Tweet tweet = data[position];
holder.txtTitle.setText(tweet.title);
return row;
}
static class TweetHolder
{
TextView txtTitle;
}
}
现在,当我运行它时,只显示一条推文(最后一条推文)。没关系,listview
只有一个项目,只有一条推文显示不是整个推文列表。
ex。 statusListTextOnly
包含:
1,
2,
3.
5,
6,
7
它只显示7
中的listview
。
答案 0 :(得分:3)
public Tweet(ArrayList<String> title) {
super();
for(String s : title)
this.title = s;
}
每次覆盖标题值时,只能看到标题的ArrayList中的最后一个值。将此构造函数中的逻辑更改为某种类型:
public Tweet(String title) {
this.title = title;
}
然后做:
List<Tweet> tweets = new ArratList<Tweet>();
for (String s: statusListTextOnly)
tweets.add(new Tweet(s))
并将tweets
放到ArrayAdapter中,不要忘记将Tweet []更改为适配器中的List;)
祝你好运!
答案 1 :(得分:1)
问题来自Tweet类中的这一行:
for(String s : title)
this.title = s;
你想在这做什么?我不能说,但你拿下列表中的最后一个标题。