java - ArrayAdapter 中带有按钮的自定义 View

标签 java android view android-arrayadapter

我已经为 ListViewArrayAdapter 定义了一个自定义 View (xml),它添加了一个 Button。我想为每行的 Button 创建一个 OnClickListener,但不创建自定义适配器。这可能吗,还是 Android 强制我为我的 ListView 创建自定义 ArrayAdapter

这是我正在做的事情的 fragment :

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
      }
});

现在我想在自定义 View 中为 Button 添加一个 OnClickListener

最佳答案

您必须实现自己的适配器,并在按钮上的 getView() 方法中设置 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在这里进行优化。您可以阅读此内容there .

关于java - ArrayAdapter 中带有按钮的自定义 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17545060/

相关文章:

java - 从类( jar )自动创建测试代码

java - 缓存新闻重新加载 10 分钟周期

android - 重新打开应用程序时 Room 无法验证数据完整性

android - 在标题栏之后对齐 Imageview

java - Android View onResume 方法?

Java:简单GUI程序的NullPointerException

java - 尝试构建一个 GUI,使用户能够向其中添加更多文本字段

android - 如何定位特定的 Calabash 功能文件?

AndroidStudio : Duplicate class found in modules annotations-13. 0 和 kotlin-compiler-embeddable

html - 从模板中管理标题导航菜单的最佳方式?