【问题标题】:onClick method for Buttons in ExpandableListViewExpandableListView 中按钮的 onClick 方法
【发布时间】:2012-07-12 16:45:07
【问题描述】:

我的 ExpandableListView 有一些 EditText 框和按钮(这是一个登录/注册屏幕)。 我想使用带有开关盒的 onClick 函数来选择已单击的按钮并对其进行处理。

对于按钮,我无法设置 onClickListener。

所有这些都在自定义可扩展列表适配器类中,而不是我写的。

我知道还有另一种方法可以解决自定义可扩展列表适配器中的正常功能,但我不知道如何。

这是 CustomExpandableAdapter 类中相关的代码 sn-ps :

    public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {
   v = null;
   position = 0;
   position=getChildId(groupPosition, childPosition);

   * - - unrelated code - *

   if(position==2)  //Draws Forgot Button
   {
       v = inflater.inflate(R.layout.forgot, parent, false);
       View forgot = v.findViewById(R.id.fpb);
       //What goes here to setOnClickListener?   
   }
   return v;
}

public void onClick(View w) {

    PopupWindow pw= new PopupWindow(inflater.inflate(R.layout.popup_layout, null, false),220,160, true);;
    switch(w.getId())
    {
    case R.id.fpb:

        {       
            pw.showAtLocation(v, Gravity.CENTER, 0, 0);
        }

}

有人可以帮忙吗?

【问题讨论】:

    标签: android eclipse button expandablelistview


    【解决方案1】:

    我希望你已经在你的适配器中实现了OnClickListner。如果是,那么您在使用forgot.setOnClickListener(this);时遇到了什么错误

    【讨论】:

    • 我重新编写了整个代码并且成功了。最终的解决方案是使用 setOnClickListener(this);只是由于某种原因之前没有工作。不过谢谢!
    【解决方案2】:

    好的...您需要在视图上而不是在特定按钮上设置 OnClickListener。所以 - 你需要在 View forgot 中找到 ViewByID(找到 EditBox、Buttons 或其他),然后在它们上设置 onClickListener。

    比如……

    Button b = forgot.findViewByID("myButton");
    b.setOnClickListener(new OnClickListener {
        etc...
    

    一定要使用正确的OnClickListener,API中有两个!:)

    【讨论】:

    • 这就是我最终所做的。但我只想实现一个 onClick(View v) 函数,并为所有可能的按钮提供一个开关盒。相反,采取了更长的方法并做了你提到的事情:)
    • 没问题,如果你用过别忘了接受答案;)
    • 似乎我不能接受这两个答案,因为两者都是有效的解决方案,但我最终使用了另一个答案!
    【解决方案3】:

    可能存在更好的解决方案,但我是这样做的:

    1.界面

    import android.view.View;
    
    public interface RecyclerViewClickListener {
        public void recyclerViewListClicked(View v);
    }
    

    2。在您的活动/片段中

    public class MyFragment(or Activity) Fragment implements RecyclerViewClickListener {
    

    它会显示方法未实现的错误。添加它们

    @Override public void recyclerViewListClicked(View v) {
        YourObject mObject = (YourObject) v.getTag();
        Log.i("My Object with >>> ", String.valueOf(mObject.getId()));
    }
    

    3.在您的适配器中的构造函数中添加末尾

    public ExpandListViewAdapter(FragmentActivity上下文等,RecyclerViewClickListener clickListener)

    4.在你的适配器中 getChildView()

       button1.setOnClickListener(new View.OnClickListener() {
                @Override public void onClick(View v) {
                   v.setTag(YourObject);
                   clickListener.recyclerViewListClicked(v);
                }
       });
    

    【讨论】:

      猜你喜欢
      • 2014-02-07
      • 1970-01-01
      • 2023-03-06
      • 1970-01-01
      • 2014-12-27
      • 2022-08-22
      • 2013-04-03
      • 1970-01-01
      • 2012-06-27
      相关资源
      最近更新 更多