Android 向自定义阵列适配器添加更多项
我有一个使用cusome ArrayAdapter填充的listview,listview中的每一行都包含图像和标题 我遵循了这个教程 要创建自定义arrayadapter并使用它填充我的listview,请执行以下操作: 在此,我将适配器附加到MainActivity中的列表:Android 向自定义阵列适配器添加更多项,android,listview,android-listview,android-arrayadapter,custom-adapter,Android,Listview,Android Listview,Android Arrayadapter,Custom Adapter,我有一个使用cusome ArrayAdapter填充的listview,listview中的每一行都包含图像和标题 我遵循了这个教程 要创建自定义arrayadapter并使用它填充我的listview,请执行以下操作: 在此,我将适配器附加到MainActivity中的列表: newsAdapter = new NewsAdapter( getActivity() , titles , images ); listView.setAdapter(newsAdapter); 每个图像和标题都
newsAdapter = new NewsAdapter( getActivity() , titles , images );
listView.setAdapter(newsAdapter);
每个图像和标题都是我想要填充listview的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;
}
}
公共类新闻适配器扩展了ArrayAdapter{
私人最终语境;
私人最终ArrayList标题;
私有最终数组列表图像;
公共新闻适配器(上下文上下文、ArrayList标题、ArrayList图像){
超级(上下文、右布局、抽屉列表、项目、标题);
this.context=上下文;
this.titles=标题;
这个。图像=图像;
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
LayoutFlater充气器=(LayoutFlater)context.getSystemService(context.LAYOUT\u充气器\u服务);
视图行视图=充气机。充气(R.layout.news\u list\u项目,父项,false);
TextView title=(TextView)rowView.findViewById(R.id.news\u title);
ImageView ImageView=(ImageView)rowView.findViewById(R.id.news\u thumble);
title.setText(titles.get(position));
新建下载的ImageTask(imageView).execute(images.get(position));
返回行视图;
}
}
这段代码运行良好,listView中填充了数据(图像和标题)
问题:
是否可以在此实现中附加Listview(添加更多行)?(例如使用newsAdapter.add()方法)
如果这是可能的,如何实现 是的,例如,您可以在自定义适配器中实现一个
addItem(字符串标题、字符串图像)
方法。
然后,此方法将传递的值添加到titles
和images
列表中
更改listadapter的内容后,必须通过在该适配器中调用notifyDataSetChanged()
来重新绘制listview,从而使视图无效
然后在主活动中调用此方法,将更多项目添加到列表中。(例如,
newsAdapter.addItem(“一些标题”,imageString);
是的,例如,您可以在自定义适配器中实现一个addItem(字符串标题,字符串图像)
方法。
然后,此方法将传递的值添加到标题
和图像
列表中
更改listadapter的内容后,必须通过在该适配器中调用notifyDataSetChanged()
来重新绘制listview,从而使视图无效
然后在主活动中调用此方法,将更多项目添加到列表中。(例如
newsAdapter.addItem(“某些标题”,imageString);
我遵循了您的指示,但它不起作用。google是否以较新版本更改了它?a请注意,此方法仍然有效,对于列表视图是一种很好的方法。但是现在,RecycleService根据具体需要而定,在某些情况下是ListView的一个很好的替代品。我遵循了您的指示,但它不起作用。google是否更改在更新的版本中,这种方法仍然有效,并且是列表视图的好方法。但是现在,根据具体需要,recyclerview在某些情况下是列表视图的好替代品。