繁体   English   中英

使用ArrayAdapter中的按钮的自定义视图

[英]Custom view with button in ArrayAdapter

我为ArrayAdapterListView定义了一个自定义视图(xml),该视图添加了一个Button 我想为此每行Button创建一个OnClickListener ,但不创建自定义适配器。 这有可能吗,还是Android强迫我为ListView创建自定义ArrayAdapter

这是我正在做的一小段:

 glAdapter = new ArrayAdapter<Group>(getActivity(), R.layout.fragment_grouprow, R.id.groupRowText, ListOfGroups); ListView groupListView = (ListView)mainView.findViewById(R.id.listViewGroupMain); groupListView.setAdapter(glAdapter); groupListView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { // Call function } }); 

现在,我想在自定义视图中为Button添加一个OnClickListener

您必须实现自己的适配器,并在getView()方法中将OnClickListener设置OnClickListener按钮。 这里开始例子:

public class CustomAdapter extends ArrayAdapter<Integer> {
    private ListView listView;

    public CustomAdapter(Context context, int textViewResourceId, Integer[] objects, ListView listView) {
        super(context, textViewResourceId, objects);
        this.listView = listView;
    }


    static class ViewHolder {
        TextView text;
        Button btn;
    }

    @Override
    public View getView(final int position, View convertView, ViewGroup parent) {
        Integer color = getItem(position);

        View rowView = convertView;

        if (rowView == null) {
            LayoutInflater inflater = ((Activity) getContext()).getLayoutInflater();
            rowView = inflater.inflate(R.layout.list_view_row, parent, false);
            ViewHolder h = new ViewHolder();
            h.text = (TextView) rowView.findViewById(R.id.item_text);
            h.btn = rowView.findViewById(R.id.btn);
            rowView.setTag(h);
        }

        ViewHolder h = (ViewHolder) rowView.getTag();

        h.text.setText(color);
        h.indicator.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // DO what you want to recieve on btn click there.
            }
        });

        return rowView;
    }
}

ViewHolder在这里进行优化。 您可以在此处阅读有关内容。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM