有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java ArrayList无法打印一项

我正在制作一个应用程序,显示从Firebase提取并存储在ArrayList中的消息。应用程序应显示一条消息10秒钟,然后滚动消息以显示下一条消息。 我正在使用textSwitcher视图显示消息。我的问题是,应用程序在ArrayList中的最后一条消息处被卡住,无法从数组的开头重新启动。 先谢谢你

以下是位置的代码:

public class ViewMessageActivity extends AppCompatActivity {
    private TextSwitcher txtSwitcher;
    private ImageButton btnNext,btnPrev;
    private FirebaseFirestore db = FirebaseFirestore.getInstance();
    private CollectionReference notebookRef = db.collection("Messages");
    ArrayList<String> ar = new ArrayList<String>();
    int count = ar.size();
    int position = 0;
    TextView hallName;

以下是对此负责的代码:

if(!ar.isEmpty()) {
    txtSwitcher.setText(ar.get(0));
    count = ar.size();
    btnNext.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            position++;
            if (position >= count)
                position = 0;
            txtSwitcher.setText(ar.get(position));
        }
    });
    btnPrev.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            txtSwitcher.showPrevious();
            --position;
            if (position < 0)
                position = ar.size() - 1;
            txtSwitcher.setText(ar.get(position));
        }
    });

共 (1) 个答案

  1. # 1 楼答案

    我发现问题并解决了。我没有更新ArrayList中的位置。新手犯的错误

    而不是这个代码:

    if(!ar.isEmpty()) {
        txtSwitcher.setText(ar.get(0));
        count = ar.size();
    

    我说:

    if(!ar.isEmpty()) {
        txtSwitcher.setText(ar.get(position));
        position++;
    if (position >= count)
        position = 0;
    
    count = ar.size();