इस तरह से मैं अंत में इसे हल है (कई पुनरावृत्तियों और विभिन्न कार्यान्वयन के बाद) द्वारा सभी दृश्यमान आइटम के माध्यम से पार कर सकते हैं। यह थोड़ा मुश्किल है, लेकिन मूल रूप से आप तीन चीजों की जरूरत है:
- एक AsyncTask कि मेटा डेटा
- एक घूंघर श्रोता हमें बताता है कि जब उपयोगकर्ता स्क्रॉल बंद कर दिया है/
- टूट पड़नेवाला एक चतुर एल्गोरिथ्म है कि किसी भी दिखाई दे पाता बटोरता पंक्ति को अपडेट करते हुए की जरूरत है और केवल अद्यतन करने के लिए एडाप्टर विशेष पंक्ति
इस तरह से मैं बनाया गया है और इसे लागू किया है पूछता है:
मैंने it here के बारे में अधिक जानकारी में लिखा है, और कृपया पूर्ण अनुकरण के लिए github code देखें।
private class UpdaterAsyncTask extends AsyncTask<Void, Void, Void> {
boolean isRunning = true;
public void stop() {
isRunning = false;
}
@Override
protected Void doInBackground(Void... params) {
while (isRunning) {
// Gather data about your adapter objects
// If an object has changed, mark it as dirty
publishProgress();
try {
Thread.sleep(200);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
return null;
}
@Override
protected void onProgressUpdate(Void... params) {
super.onProgressUpdate();
// Update only when we're not scrolling, and only for visible views
if (mScrollState == OnScrollListener.SCROLL_STATE_IDLE) {
int start = mListview.getFirstVisiblePosition();
for(int i = start, j = mListview.getLastVisiblePosition(); i<=j; i++) {
View view = mListview.getChildAt(i-start);
if (((Content)mListview.getItemAtPosition(i)).dirty) {
mListview.getAdapter().getView(i, view, mListview); // Tell the adapter to update this view
}
}
}
}
}
हैलो, मैं इसे बनाने की कोशिश करता हूं लेकिन मेरे पास एक पीबी है। जब मैं बैकबटन दबाता हूं, डीएल जारी रहता है (यही वह है जो मैं चाहता हूं) लेकिन जब मैं इस दृश्य में वापस आ जाता हूं, प्रगति बार्स नहीं चलता है। क्या आप अपने एडाप्टर का उदाहरण डाल सकते हैं। क्या यह मेरे जैसे काम करता है जब आप वापस दबाते हैं और उसी दृश्य पर वापस आते हैं? – Cocorico
हां, यह तब काम करता है जब 'गतिविधि' शुरू होता है और जब यह गतिविधि को फिर से शुरू करता है (रुका हुआ स्थिति से)। यहां स्रोत कोड में 'निजी शून्य रीफ्रेशस्क्रीन() 'पर एक नज़र डालें: https://github.com/slidese/SGU/blob/master/src/se/slide/sgu/StartActivity.java – Mike