Android 如何从listView动态添加按钮?

Android 如何从listView动态添加按钮?,android,listview,button,custom-adapter,Android,Listview,Button,Custom Adapter,我有一个添加按钮,通过点击添加按钮,一个列表视图弹出,在该列表视图的每一行中都有一个按钮。通过单击按钮,特定行(我指的是该行的文本和图像)应作为图像按钮添加到我的应用程序的主屏幕 这是listView的customadapter类 public class NewsRowAdapter extends ArrayAdapter<Item> { private Activity activity; private List<Item> items; private Ite

我有一个添加按钮,通过点击添加按钮,一个列表视图弹出,在该列表视图的每一行中都有一个按钮。通过单击按钮,特定行(我指的是该行的文本和图像)应作为图像按钮添加到我的应用程序的主屏幕

这是listView的customadapter类

public class NewsRowAdapter extends ArrayAdapter<Item> {

private Activity activity;
private List<Item> items;
private Item objBean;
private int row;
private DisplayImageOptions options;
ImageLoader imageLoader;

public NewsRowAdapter(Activity act, int resource, List<Item> arrayList) {
    super(act, resource, arrayList);
    this.activity = act;
    this.row = resource;
    this.items = arrayList;

    options = new DisplayImageOptions.Builder()
            .showStubImage(R.drawable.profile)
            .showImageForEmptyUrl(R.drawable.profile).cacheInMemory()
            .cacheOnDisc().build();
    imageLoader = ImageLoader.getInstance();

}

@Override
public View getView(final int position, View convertView, ViewGroup parent) {
    View view = convertView;
    ViewHolder holder;
    if (view == null) {
        LayoutInflater inflater = (LayoutInflater) activity
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        view = inflater.inflate(row, null);

        holder = new ViewHolder();
        view.setTag(holder);
    } else {
        holder = (ViewHolder) view.getTag();
    }

    if ((items == null) || ((position + 1) > items.size()))
        return view;

    objBean = items.get(position);

    holder.tvTitle = (TextView) view.findViewById(R.id.tvtitle);
    holder.tvDesc = (TextView) view.findViewById(R.id.tvdesc);
    holder.tvDate = (TextView) view.findViewById(R.id.tvdate);
    holder.imgView = (ImageView) view.findViewById(R.id.image);
    holder.pbar = (ProgressBar) view.findViewById(R.id.pbar);
            holder.button = (Button) view.findViewById(R.id.button);
    if (holder.tvTitle != null && null != objBean.getTitle()
            && objBean.getTitle().trim().length() > 0) {
        holder.tvTitle.setText(Html.fromHtml(objBean.getTitle()));
    }
    if (holder.tvDesc != null && null != objBean.getDesc()
            && objBean.getDesc().trim().length() > 0) {
        holder.tvDesc.setText(Html.fromHtml(objBean.getDesc()));
    }
    if (holder.tvDate != null && null != objBean.getPubdate()
            && objBean.getPubdate().trim().length() > 0) {
        holder.tvDate.setText(Html.fromHtml(objBean.getPubdate()));
    }
    if (holder.imgView != null) {
        if (null != objBean.getLink()
                && objBean.getLink().trim().length() > 0) {
            final ProgressBar pbar = holder.pbar;

            imageLoader.init(ImageLoaderConfiguration
                    .createDefault(activity));
            imageLoader.displayImage(objBean.getLink(), holder.imgView,
                    options, new ImageLoadingListener() {
                        @Override
                        public void onLoadingComplete() {
                            pbar.setVisibility(View.INVISIBLE);

                        }

                        @Override
                        public void onLoadingFailed() {
                            pbar.setVisibility(View.INVISIBLE);
                        }

                        @Override
                        public void onLoadingStarted() {
                            pbar.setVisibility(View.VISIBLE);

                        }
                    });

        } else {
            holder.imgView.setImageResource(R.drawable.ic_launcher);
        }
    }

    return view;
}

public class ViewHolder {

    public TextView tvTitle, tvDesc, tvDate;
    private ImageView imgView;
    private ProgressBar pbar;

}

}
公共类NewsRowAdapter扩展了ArrayAdapter{
私人活动;
私人清单项目;
私有项objBean;
私人int row;
私有显示图像选项;
图像加载器;
公共NewsRowAdapter(活动行为、int资源、列表arrayList){
超级(act、资源、arrayList);
这个活动=行动;
this.row=资源;
this.items=arrayList;
选项=新建DisplayImageOptions.Builder()
.showStubImage(R.drawable.profile)
.showmageforemptyurl(R.drawable.profile).cacheInMemory()
.cacheOnDisc().build();
imageLoader=imageLoader.getInstance();
}
@凌驾
公共视图getView(最终整数位置、视图转换视图、视图组父视图){
视图=转换视图;
视窗座;
如果(视图==null){
LayoutFlater充气机=(LayoutFlater)活动
.getSystemService(上下文布局\充气机\服务);
视图=充气机。充气(行,空);
holder=新的ViewHolder();
视图.设置标签(支架);
}否则{
holder=(ViewHolder)view.getTag();
}
if((items==null)| |((position+1)>items.size())
返回视图;
objBean=items.get(位置);
holder.tvTitle=(TextView)view.findViewById(R.id.tvTitle);
holder.tvDesc=(TextView)view.findViewById(R.id.tvDesc);
holder.tvDate=(TextView)view.findViewById(R.id.tvDate);
holder.imgView=(ImageView)view.findViewById(R.id.image);
holder.pbar=(ProgressBar)view.findViewById(R.id.pbar);
holder.button=(button)view.findViewById(R.id.button);
if(holder.tvTitle!=null&&null!=objBean.getTitle()
&&objBean.getTitle().trim().length()>0){
holder.tvTitle.setText(Html.fromHtml(objBean.getTitle());
}
if(holder.tvDesc!=null&&null!=objBean.getDesc()
&&objBean.getDesc().trim().length()>0){
holder.tvdsc.setText(Html.fromHtml(objBean.getDesc());
}
if(holder.tvDate!=null&&null!=objBean.getPubdate()
&&objBean.getPubdate().trim().length()>0){
holder.tvDate.setText(Html.fromHtml(objBean.getPubdate());
}
if(holder.imgView!=null){
if(null!=objBean.getLink()
&&objBean.getLink().trim().length()>0){
最终进度条pbar=holder.pbar;
imageLoader.init(ImageLoaderConfiguration
.createDefault(活动));
imageLoader.displayImage(objBean.getLink(),holder.imgView,
选项,新建ImageLoadingListener(){
@凌驾
public void onload完成(){
pbar.setVisibility(视图不可见);
}
@凌驾
public void onload失败(){
pbar.setVisibility(视图不可见);
}
@凌驾
public void onLoadingStarted(){
pbar.setVisibility(View.VISIBLE);
}
});
}否则{
holder.imgView.setImageResource(R.drawable.ic_启动器);
}
}
返回视图;
}
公共类视图持有者{
公共文本视图tvTitle、tvDesc、tvDate;
私有图像视图imgView;
私人银行;
}
}
这个列表视图是通过json解析的,所以当我添加一个按钮时,该按钮应该是布局中的第一个按钮 因此,我的第一个问题是,如何在主屏幕上动态添加按钮?? 第二个问题 我应该使用GridView来显示按钮、表格布局还是其他

Plzz帮助我了解android编程的新知识


Thanx。我认为您可以使用
gridView
,但它先在列中添加子元素,然后在行中添加子元素。如果你想以这种方式显示你的主屏幕,你可以使用它

您可以创建一个
侦听器
,该侦听器将侦听您在列表中单击的按钮,并将该项添加到
数组
中,该数组将填充您的
网格视图


注意:-如果项目较少,请使用
array
,否则
ArrayList
或任何其他数据结构

我应该向数组添加什么??文本和图像视图??sry我真的是编程新手。。。如果可以的话,我将非常感谢你的帮助。。