我有一个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;
            }
        }
    }
};

07-28 03:41