【问题标题】:How to check whether getView() is called because of notifyDataSetChanged()如何检查 getView() 是否因为 notifyDataSetChanged() 而被调用
【发布时间】:2015-07-13 12:52:29
【问题描述】:

我的 getView 中有一个条件,它应该只在调用 getView 时调用,因为调用了 notifyDataSetChanged()。问题是 getView 可以因为各种原因被调用,例如由于键盘隐藏/显示、滚动列表等而改变了 listview 布局,但在任何这些情况下,notifyDataSetChanged() 方法都不会被调用。

有什么方法可以追踪到这个吗?

谢谢

代码

<set xmlns:android="http://schemas.android.com/apk/res/android"
android:shareInterpolator="@android:anim/decelerate_interpolator">
<translate
    android:fromXDelta="0%" android:toXDelta="0%"
    android:fromYDelta="100%" android:toYDelta="0%"
    android:duration="250" />

【问题讨论】:

  • 所以你的代码逻辑不对,贴出你的代码

标签: android android-layout android-listview


【解决方案1】:

您可以做的是保留一个全局变量并创建一个包装器方法,该方法将全局变量设置为 true 并调用 notifydatasetchanged()。并在您的 getView() 中检查全局变量的值是否为 true 并执行您的操作。

此外,当您在 getView() == yourdatalist.size(); 中定位时,您必须将该全局变量设置为 false;

    // in the adapter
    boolean notifyDataSetChangedCalled;

    public void notifyDataSetChangedWrapper(){
       notifyDataSetChangedCalled = true;
       notifyDataSetChanged();
    }

    getView(View converView , int position , ViewGroup parent){
       .
       .
       .
       if(position == listItems.size()){
        notifyDataSetChangedCalled = false;
       }
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-11-29
    • 1970-01-01
    • 1970-01-01
    • 2011-09-08
    • 2021-04-20
    • 1970-01-01
    • 2016-07-05
    • 1970-01-01
    相关资源
    最近更新 更多