【问题标题】:How to set on button clicked event for Randomly Custom ListView Adapter?如何为随机自定义 ListView 适配器设置按钮单击事件?
【发布时间】:2015-11-17 11:23:12
【问题描述】:

我正在创建自定义列表视图适配器,它由 2 个文本视图(tvA 和 tvB)、一个微调器(具有固定 3 个值)和一个按钮(okButton)组成。 列表的数据是动态填充的。 按下 buttonOk 时,既获取 textviews 值,也获取 spinner 的当前选定项并对其进行烘烤。

我该怎么做?对不起我的英语。

【问题讨论】:

  • 你尝试了什么,兄弟?
  • 你能展示你的适配器类吗?

标签: android listview android-listview listadapter


【解决方案1】:

在填充值的 getView() 方法中添加此侦听器。

okButton.setOnClickListener(new OnItemClickListener(position, tvA, tvB, spinner));

并像这样创建 OnItemClickListener 类

private class OnItemClickListener implements View.OnClickListener {
    private int mPosition;

    OnItemClickListener(int position, TextView tvA, TextView tvB, Spinner spinner) {
        mPosition = position;
        ...
    }

    @Override
    public void onClick(View arg0) {
        // handle everything here
    }
}

【讨论】:

  • 看起来不错,你能告诉我 okButton.setOnClickListener(new OnItemClickListener(position, tvA, tvB, spinner)) 中的位置参数是什么;
【解决方案2】:

如果所有视图都是兄弟,则使用以下代码

  ((Button) view.findViewById(R.id.okButton))
                    .setOnClickListener(new View.OnClickListener() {

                        @Override
                        public void onClick(View v) {
                            // TODO Auto-generated method stub
                            View parentRow = (View) v.getParent();
                            RelativeLayout rel = (RelativeLayout) parentRow.getParent() ;                               
                            TextView tvA = (TextView) rel.findViewById(R.id.tvA);
                            TextView tvB = (TextView) rel.findViewById(R.id.tvB);
                            Spinner sp = (spinner) rel.findViewById(R.id.spinner1);
                            //list view position-
                            ListView listView = (ListView) parentRow
                                    .getParent();
                            int position = listView
                                    .getPositionForView(parentRow);

                            Toast.makeText(context, tvA.getText().toString() + " " + position,Toast.LENGTH_SHORT).show();
                            Toast.makeText(context, tvB.getText().toString() + " " + position,Toast.LENGTH_SHORT).show();
                            Toast.makeText(context, spinner.getSelectedItem().toString() + " " + position, Toast.LENGTH_SHORT).show();

                        }
                    });

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-17
    • 2017-10-15
    • 1970-01-01
    • 2016-12-16
    相关资源
    最近更新 更多