簡體   English   中英

遍歷循環以在 textview Android Studio 中以 1 秒的延遲打印 arraylist

[英]Iterate through a loop to print arraylist with 1sec delay in a textview Android Studio

我正在嘗試同時打印 ArrayList 的元素,但在同一個 TextView 中有延遲,無論我嘗試什么,執行時都會有延遲,但唯一打印的元素是數組的最后一個。 只是為了擴展上下文,在按鈕的 onClick 上執行“啟動”方法,然后將隨機數添加到 ArrayList 並且元素打印在 ZE62B85E9C91FF5C83D5CC8D8EB9F118我正在嘗試實現),每次執行該方法時,它都會向 ArrayList 添加一個額外的元素並打印它。

public class MainActivity extends AppCompatActivity {
private EditText et1;
private TextView tv2;
private ArrayList<String> numbers=new ArrayList<String>();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        et1=findViewById(R.id.et1);
        tv2=findViewById(R.id.tv2);
    }

    public void iniciate(View view){
        numbers.add(String.valueOf ((int) (Math.random() * 10)+1));

        for (int i = 0; i < numbers.size(); i++){
            tv2.setText(numbers.get(i));

            tv2.postDelayed(new Runnable() {
                @Override
                public void run() {
                    tv2.setText("");
                }
            },2000);

        }

    }

}

通過閱讀代碼,我可以看到數組中只有一個元素,因此您的 function 只打印一個元素是有意義的。 這是因為您只向數組添加一次,一個隨機數乘以 10 加 1,然后轉換為 String。

numbers.add(String.valueOf ((int) (Math.random() * 10)+1));

我使用在線 java 編譯器進行了檢查。 測試在這里。

話雖如此,我的猜測是您正在使用該代碼動態地將元素添加到數組中(也許是使用事件?)。 如果是這樣,請更新您的問題並添加,因為實際上,您似乎只需要在numbers的 add() 方法周圍添加一個小循環,例如:

int i = 0;
while(i < 10) {
    numbers.add(String.valueOf((int)(Math.random() * 10)+1));
    i++;
}

暫無
暫無

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

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