【问题标题】:Button inside childview of ExpandableListview is not workingExpandableListview 子视图内的按钮不起作用
【发布时间】:2016-11-30 17:55:04
【问题描述】:

对于可扩展列表视图的每个子视图,我都有加号、减号按钮和一个计数文本视图。当我单击加号或减号按钮时,应显示计数。我尝试使用 setOnclickListener 以及自定义侦听器。但它不能正常工作。 请帮我解决这个问题。谢谢。

内部适配器类:

        ViewHolder.mMinus.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                myInterface.myClick(listPosition,expandedListPosition,view,ViewHolder.mPlus,ViewHolder.mMinus,ViewHolder.mCount);
            }
        });

public void setItem(MyInterface myInterface) { this.myInterface=myInterface;

}
public interface MyInterface
{
    void myClick(int listposition, int expandedlistposition, View v,Button plus,Button minus,TextView count);
}

内部活动:

@Override
public void myClick(int listposition, int expandedlistposition, View v, Button plus, Button minus, TextView count) {
    old_count[listposition][expandedlistposition]--;
    count.setText(String.valueOf(old_count[listposition][expandedlistposition]));
}

【问题讨论】:

  • 发布您的代码 sn-p 和 logcat,您是否尝试过谷歌搜索..?
  • 是的,我发布了,我也在 google 中尝试过。@nobalG

标签: android


【解决方案1】:

这是您想要根据您的要求管理它的完整代码!享受 :) Expandable List View Tutorial

它应该在 getChildView() 中

 @Override
public View getChildView(int groupPosition, final int childPosition,
                         boolean isLastChild, View convertView, ViewGroup parent) {

    final String childText = (String) getChild(groupPosition, childPosition);

    if (convertView == null) {
        LayoutInflater infalInflater = (LayoutInflater) this._context
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        convertView = infalInflater.inflate(R.layout.list_item, null);
    }

    TextView txtListChild = (TextView) convertView
            .findViewById(R.id.lblListItem);

    txtListChild.setText(childText);
    txtListChild.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Toast.makeText(_context,"text clicked",Toast.LENGTH_SHORT).show();
        }
    });
    return convertView;
}

【讨论】:

  • 我已经学习过本教程。这很有帮助。但是,我在子视图中有三个视图(加号按钮、减号按钮和计数文本视图)。我想触发那个按钮。并显示计数。
  • 兄弟看看我已经测试过的答案....在链接的代码中为您编辑它现在可以工作...
  • 谢谢@nightcoder .. 我也试过这个兄弟。假设,如果我单击加号或减号按钮,我有 10 个子视图,特定的文本视图应该增加或减少..但它不是那样工作的。相反,当我单击一个子项中的按钮时,计数在另一个子项 textview 中会增加或减少。但是,感谢您的友好回复兄弟..
  • 我认为您必须共享您的代码...可扩展的适配器类和主类..这样很容易理解您的问题
  • 感谢@nightcoder。现在,我找到了它对我有用的解决方案。我们必须从 getChildView 和 getGroupView 中删除 (convertview ==null) 行。原因是,已经创建的视图被重用了。删除此行后所有视图正在重新创建。虽然,视图已经创建。
【解决方案2】:

@覆盖 公共视图 getChildView(int groupPosition, final int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {

final String childText = (String) getChild(groupPosition, childPosition);

    LayoutInflater infalInflater = (LayoutInflater) this._context
            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    convertView = infalInflater.inflate(R.layout.list_item, null);

TextView txtListChild = (TextView) convertView
        .findViewById(R.id.lblListItem);

txtListChild.setText(childText);
txtListChild.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        Toast.makeText(_context,"text clicked",Toast.LENGTH_SHORT).show();
    }
});
return convertView;

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多