【问题标题】:Button clicklistener inside listview列表视图内的按钮点击监听器
【发布时间】:2012-04-28 03:59:03
【问题描述】:

您好,当我尝试添加 oncicklistener 给 null pointer exception 时,我有包含 textview 和 edittext 和按钮的列表视图,任何人都可以帮助我解决这个问题。..

【问题讨论】:

  • 您使用的是阵列适配器吗?
  • 至少发布你的适配器的getview方法..
  • 以后,每次你发帖而你的应用抛出Exception时,你都需要发布日志。这很重要,您也应该学习如何阅读。此外,考虑到您正在抛出NullPointerException,最好也发布您的Adapter 代码或任何其他相关代码。你来这里寻求帮助,但你并没有给任何人太多的工作机会。 What have you tried

标签: android


【解决方案1】:

如果您覆盖ArrayAdapter,您可以使用getView() 在列表的每个元素按钮上设置onClick 侦听器:

class Arraybtton extends ArrayAdapter<RowItem>
{
    @Override
    public android.view.View getView(int position, android.view.View convertView, android.view.ViewGroup parent)
    {
        View elem;
        Button btn;

        if (convertView == null)
        {
            elem = getLayoutInflater().inflate(R.layout.listview_elem, parent, false);
        }
        else
        {
            elem = convertView;
        }

        RowItem itm = getItem(position);
        btn = (Button) elem.findViewById(R.id.button);
        btn.setOnClickListener(new OnClickListener()
        {
            public void onClick(View arg0)
            {
                // TODO Auto-generated method stub
            }
        })

        return elem;
    }
};
}
}

【讨论】:

  • 是的,我在你的评论中看到了,但我与你分享这个选项,因为我没有找到任何使用 baseadapter 的解决方案。如果你能找到那么好,否则就去吧
  • 只是一些代码解释/补充:您必须调用((Activity) getContext()) 才能访问getLayoutInflater() 方法。此外,您需要初始化列表项中的视图(例如((TextView) elem.findViewById(textViewResourceId)).setText(itm.toString())。为了防止混淆(我一开始也没有理解这一点):RowItem 不是 Android/Java 类 - 它只是代表您的类用于填充 ArrayAdapter(例如String)。
  • 当然你必须至少指定一个构造函数,通常public Arraybttn(Context ctx, int listViewRes, int txtViewRes, List&lt;RowItem&gt; items) 就足够了。
猜你喜欢
  • 2012-11-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-09
  • 2022-08-15
  • 2017-07-13
  • 1970-01-01
相关资源
最近更新 更多