簡體   English   中英

在Android中幾秒鍾后如何清除RecyClerview數據?

[英]How clear RecyClerview Data after few seconds in android?

我有一個關於在Android幾秒鍾后清除recyclerview的問題。 我嘗試在線程中執行此操作,但對我不起作用。 我用了這段代碼

public void cleardbView()
{
    final Thread countdown = new Thread() {

        @Override
        public void run() {
            try {
                Thread.sleep(15000);
                runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        recyclerView = (RecyclerView) findViewById(R.id.dbView);
                        arrayList.clear();
                        layoutManager = new LinearLayoutManager(MainActivity.this);
                        return;
                        }
                    });

            } catch (InterruptedException e) {
            }
            return;
        }
    };
    countdown.start();
}

我在添加數據的部分中使用此代碼。 該方法在所有條件下都太大,因此我只在這里放置偽代碼(我試圖盡可能簡化它:D)

if(conditions)
{
    insertData();
}
if(inserted)
{
    cleardbView(); 
}

您需要使用yourAdapter.notifyDataSetChanged(); 在清除列表后arrayList.clear();

Adapter.notifyDataSetChanged();

  • 通知任何注冊的觀察者該數據集已更改。

嘗試這個

public void cleardbView()
{
    final Thread countdown = new Thread() {

        @Override
        public void run() {
            try {
                Thread.sleep(15000);
                runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        recyclerView = (RecyclerView) findViewById(R.id.dbView);
                        arrayList.clear();
                        layoutManager = new LinearLayoutManager(MainActivity.this);
                        yourAdapter.notifyDataSetChanged();
                        return;
                        }
                    });

            } catch (InterruptedException e) {
            }
            return;
        }
    };
    countdown.start();
}

這是對問題的更好而更短的實現,並且處理程序是后台線程,可讓您與UI進行通信// //在此處查看有關線程和處理程序的更多說明Handler vs AsyncTask vs Thread

Handler handler = new Handler();
int delay = 2000; //milliseconds

handler.postDelayed(new Runnable(){
    public void run(){
       RecyclerViewAdapterDataList.clear();
       RecyclerViewAdapter.notifyDataSetChanged();
    }
}, delay);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM