java - الزناد SwipeRefreshLayout برمجيا




android (5)

إذا كنت تستخدم swipeRefreshLayout الجديد intoduced في الإصدار 5.0

نظرًا لأن الصورة المعروضة أعلاه تحتاج فقط إلى إضافة السطر التالي لتشغيل تخطيط تحديث التمرير برمجيًا

 mSwipeRefreshLayout.post(new Runnable() {
        @Override
        public void run() {
            mSwipeRefreshLayout.setRefreshing(true);
        }
    });

إذا كنت اتصل ببساطة

 mSwipeRefreshLayout.setRefreshing(true);

لن يؤدي ذلك إلى تنشيط الدائرة ، لذلك بإضافة السطر أعلاه ، يمكنك إجراء تأخير في مؤشر ترابط واجهة المستخدم بحيث تعرض حركة الدائرة داخل مؤشر ترابط واجهة المستخدم.

عن طريق استدعاء mSwipeRefreshLayout.setRefreshing(true) لن يتم تنفيذ OnRefreshListener

لوقف استدعاء الرسوم المتحركة للتحميل الدائرية mSwipeRefreshLayout.setRefreshing(false)

هل هناك أي طريقة لتشغيل SwipeRefreshLayout برمجيا؟ يجب أن يبدأ الرسم المتحرك ومن يجب onRefresh الأسلوب onRefresh من واجهة OnRefreshListener .


يمكنك استدعاء الأسلوب onRefresh () برمجيًا ، ثم داخل الأسلوب بدء الحركة في حالة عدم بدء تشغيلها بالفعل. انظر ما يلي:

@Override
public void onRefresh() {
    if (!mSwipeRefreshLayout.isRefreshing()) mSwipeRefreshLayout.setRefreshing(true);
    //TODO
}

لمجرد القوة في إضافة هذا اثنين لفتة انتقاد ennable

swipeRefreshLayout.setOnRefreshListener(
    new SwipeRefreshLayout.OnRefreshListener() {
        @Override
        public void onRefresh() {
            Log.i(TAG, "onRefresh called from SwipeRefreshLayout");

            // This method performs the actual data-refresh operation.
            // The method calls setRefreshing(false) when it's finished.
            FetchData();
        }
    }
);

من أجل تشغيل SwipeRefreshLayout ، جربت هذا الحل:

SwipeRefreshLayout.OnRefreshListener swipeRefreshListner = new SwipeRefreshLayout.OnRefreshListener() {
        @Override
        public void onRefresh() {
            Log.i(TAG, "onRefresh called from SwipeRefreshLayout");
            // This method performs the actual data-refresh operation.
            // The method calls setRefreshing(false) when it's finished.
            loadData();
        }
    };

الآن جزء أساسي:

swipeLayout.post(new Runnable() {
@Override public void run() {
     swipeLayout.setRefreshing(true);
     // directly call onRefresh() method 
     swipeRefreshListner.onRefresh();
   }
});

double myNum = .912385;
int precision = 10000; //keep 4 digits
myNum= Math.floor(myNum * precision +.5)/precision;




java android swiperefreshlayout