我有一个ListView,它通过CursorLoader从ContentProvider中提取数据。
我想要一个按钮,当按下该按钮时,它可以读出ListView中的数据。棘手的部分是ListView中的数据不断更新(来自ContentProvider的数据每隔几秒钟定期更改),并且在读取音频时每行的数据可能会更新。
如何使每次更新都读取最新数据?
最佳答案
尝试以下代码:
private boolean ttsEnabled= true;
private Thread ttsThread = null;
private ListView lastState = null;
public void enableTTS() {
ttsEnabled = true;
ttsThread = new Thread(ttsRunnable);
ttsThread.start();
}
public void disableTTS() {
ttsEnabled = false;
try {
ttsThread.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
private Runnable ttsRunnable = new Runnable() {
@Override
public void run() {
while (ttsEnabled) {
if (lastState == null || !lastState.equals(yourListView)) {
// List view updated, tts here
lastState = yourListView;
}
}
}
};