Android将Arraylist数据设置为自定义适配器

我有一个ArrayList statusListTextOnly; 包含一些推文。 现在,如果我像这样使用它

 i.setAdapter(new ArrayAdapter(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 title) { super(); for(String s : title) this.title = s; } } 

我的TweetAdapter类:

 public class TweetAdapter extends ArrayAdapter{ 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只有一个项目,只有一条推文显示不是整个推文列表。

恩。 statusListTextOnly包含:

 1, 2, 3. 5, 6, 7 

它只在listview显示7

 public Tweet(ArrayList title) { super(); for(String s : title) this.title = s; } 

每次覆盖标题值时,只能看到标题的ArrayList中的最后一个值。 将此构造函数中的逻辑更改为某种类型:

 public Tweet(String title) { this.title = title; } 

然后做:

 List tweets = new ArratList(); for (String s: statusListTextOnly) tweets.add(new Tweet(s)) 

并将推tweets到您的ArrayAdapter,不要忘记将Tweet []更改为适配器中的List;)祝您好运!

问题来自Tweet类中的这一行:

 for(String s : title) this.title = s; 

你想在这做什么? 我不能说,但你拿下列表中的最后一个标题。