【问题标题】:android adapter data changed to notify host activityandroid 适配器数据更改为通知主机活动
【发布时间】:2015-02-15 17:26:06
【问题描述】:

这是我的一个用例。我有一个带有列表视图和文本视图的活动。文本视图是列表视图上所有数字的总和,列表视图包含所有数字。我有一个针对这种情况的自定义适配器。

在列表视图的每一行,我都有一个按钮。此按钮将更改此行上的数字。 我想做的是这样的:

  1. 当用户单击按钮时,每行的值都会更改 - 可行。
  2. textview 上的总和也会相应改变。

这是一个简化的示例。实际上,我也有一个约束,即我有一个数据模型来表示每个角色的数据。我无法将数据模型扩展到 DataSetObserver。

有什么帮助吗?

【问题讨论】:

    标签: android android-listview adapter


    【解决方案1】:

    您应该创建一个侦听器,它侦听您的增量按钮上的触摸,并在其中调用扩展您创建的接口的类的方法。 为方便起见,在您的适配器中,您将拥有:

    public interface OnIncrementListener{
        onNumberIncremented();
    }
    
    private OnIncrementListener mListener;
    
    //This is inside getView method of your adapter
    myButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                mListener.onNumberIncremented();
            }
    });
    

    然后是你的活动

    public class MyActivity extends Activity implements OnIncrementListener {
    
       //inside onCreate
       myAdapter.setOnIncrementListener(this);
       //end onCreate
    
        @Override
        public void onNumberIncremented() {
             //Change value of your TextView here
        }
    }
    

    【讨论】:

    • 这个解决方案服务于我的目的。谢谢。
    • 需要在接口方法void onNumberIncremented();添加返回类型
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多