向自定义ArrayAdapter添加更多项目

时间:2014-02-17 14:18:01

标签: android listview android-listview android-arrayadapter custom-adapter

我有一个listview,我使用cusome ArrayAdapter填充,listview中的每一行都包含图像和标题。

我按照本教程http://www.vogella.com/tutorials/AndroidListView/article.html 创建自定义arrayadapter并使用它填充我的listview,如下所示:

这里我将适配器附加到MainActivity中的列表中:

newsAdapter = new NewsAdapter( getActivity() , titles , images );
listView.setAdapter(newsAdapter);

每个图像和标题都是ArrayList对象,我想使用。

填充我的列表视图

这是我的ArrayAdapter:

public class NewsAdapter extends ArrayAdapter<String> {

private final Context context;
private final ArrayList<String> titles;
private final ArrayList<String> images;

public NewsAdapter(Context context,ArrayList<String> titles, ArrayList<String> images ) {
    super(context, R.layout.drawer_list_item, titles);
    this.context = context;
    this.titles = titles;
    this.images = images;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View rowView = inflater.inflate(R.layout.news_list_item, parent, false);
    TextView title = (TextView) rowView.findViewById(R.id.news_title);
    ImageView imageView = (ImageView) rowView.findViewById(R.id.news_thumble);
    title.setText(titles.get(position));
    new DownloadImageTask(imageView).execute(images.get(position));
    return rowView;
}



 }

此代码完美运行,listView填充了数据(图像和标题)。

问题:

是否可以在此实现中附加Listview(添加更多行)? (例如使用newsAdapter.add()方法)。

如果有可能,如何实现?

1 个答案:

答案 0 :(得分:4)

是的,您可以在自定义适配器中实现addItem(String title, String image)方法。 然后,此方法会将传递的值添加到titlesimages列表中。

更改listadapter的内容后,您必须通过调用该适配器中的notifyDataSetChanged()来重绘列表视图来使视图无效。

然后在主活动中调用此方法,以向列表中添加更多项目。 (例如newsAdapter.addItem("some Title", imageString);