按下按钮后数据未显示在回收站视图上

时间:2021-06-09 13:01:17

标签: java android

按下添加按钮后,我的数据不会添加到 Recylerview,直到我重新启动应用程序或按下操作栏中内置的后退按钮。按下按钮后我的活动不会关闭,因此我通常使用设备上的后退按钮。在应用程序重新启动或添加一组新数据并按下操作栏中的后退按钮之前,我的 Recyclerview 中不会添加任何内容。

我也尝试在按下按钮后立即完成活动,但这也不会将数据添加到 Recyclerview。

我想知道如何在按下按钮后完成我的活动并在 Recyclerview 中显示数据,或者如何使我的设备按下后退按钮仍能显示数据。

主活动代码:


import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;

import android.content.Intent;
import android.database.Cursor;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;

import com.google.android.material.floatingactionbutton.FloatingActionButton;

import java.util.ArrayList;

public class MainActivity extends AppCompatActivity {

    RecyclerView recyclerView;
    FloatingActionButton newTaskBtn;
    myDatabase myDB;
    ArrayList<String> task_id, task_subject, task_description, task_due_date;
    CustomAdapter customAdapter;

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

        recyclerView = findViewById(R.id.recyclerTasks);
        newTaskBtn = findViewById(R.id.floatingBtn);
        newTaskBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent = new Intent(MainActivity.this, AddActivity.class);
                startActivity(intent);
            }
        });
        myDB = new myDatabase(MainActivity.this);
        task_id = new ArrayList<>();
        task_subject = new ArrayList<>();
        task_description = new ArrayList<>();
        task_due_date = new ArrayList<>();

        storeDataArray();

        customAdapter = new CustomAdapter(MainActivity.this, task_id, task_subject, task_description, task_due_date);
        recyclerView.setAdapter(customAdapter);
        recyclerView.setLayoutManager(new LinearLayoutManager(MainActivity.this));

    }

    void storeDataArray() {
        Cursor cursor = myDB.readAllData();
        if (cursor.getCount() == 0) {
            Toast.makeText(this, "No data", Toast.LENGTH_SHORT).show();

        } else {
            while (cursor.moveToNext()) {
                task_id.add(cursor.getString(0));
                task_subject.add(cursor.getString(1));
                task_description.add(cursor.getString(2));
                task_due_date.add(cursor.getString(3));
            }
        }
    }
}

添加数据活动代码:


import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.widget.Button;
import android.widget.EditText;

public class AddActivity extends AppCompatActivity {

    EditText subjectEntry, descEntry, dateEntry;
    Button addBtn;

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

        subjectEntry = findViewById(R.id.subjectEntry);
        descEntry = findViewById(R.id.descEntry);
        dateEntry =  findViewById(R.id.dateEntry);
        addBtn = findViewById(R.id.addbtn);
        addBtn.setOnClickListener(view -> {
            myDatabase myDB = new myDatabase(AddActivity.this);
            myDB.addTask(subjectEntry.getText().toString().trim(),
                    descEntry.getText().toString().trim(),
                    Integer.valueOf(dateEntry.getText().toString().trim()));


        });
    }
}

适配器代码


import android.content.Context;
import android.content.Intent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.LinearLayout;
import android.widget.TextView;

import androidx.annotation.NonNull;
import androidx.constraintlayout.widget.ConstraintLayout;
import androidx.recyclerview.widget.RecyclerView;

import java.util.ArrayList;

public class CustomAdapter extends RecyclerView.Adapter<CustomAdapter.myViewHolder> {

    private Context context;
    private ArrayList task_id, task_subject, task_description, task_due_date;
    private int position;

    CustomAdapter(Context context, ArrayList task_id, ArrayList task_subject, ArrayList task_description, ArrayList task_due_date){
        this.context = context;
        this.task_id = task_id;
        this.task_description = task_description;
        this.task_subject = task_subject;
        this.task_due_date = task_due_date;
    }

    @NonNull
    @Override
    public myViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        LayoutInflater inflater = LayoutInflater.from (context);
        View view = inflater.inflate(R.layout.to_do_list, parent, false);
        return new myViewHolder(view);
    }

    @Override
    public void onBindViewHolder(@NonNull final myViewHolder holder, final int position) {
        this.position = position;

        holder.taskid_txt.setText(String.valueOf(task_id.get(position)));
        holder.taskSubject_txt.setText(String.valueOf(task_subject.get(position)));
        holder.taskDescription_txt.setText(String.valueOf(task_description.get(position)));
        holder.taskDate_txt.setText(String.valueOf(task_due_date.get(position)));
        holder.mainLayout.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent = new Intent(context, UpdateActivity.class);
                intent.putExtra("id", String.valueOf(task_id.get(position)));
                intent.putExtra("Description", String.valueOf(task_description.get(position)));
                intent.putExtra("Subject", String.valueOf(task_subject.get(position)));
                intent.putExtra("Due Date", String.valueOf(task_due_date.get(position)));
                context.startActivity(intent);
            }
        });
    }

    @Override
    public int getItemCount() {
        return task_id.size();
    }

    public class myViewHolder extends RecyclerView.ViewHolder {

        TextView taskid_txt, taskSubject_txt, taskDescription_txt, taskDate_txt;
        LinearLayout mainLayout;

        public myViewHolder(@NonNull View itemView) {
            super(itemView);
            taskid_txt = itemView.findViewById(R.id.taskid_txt);
            taskSubject_txt = itemView.findViewById(R.id.taskSubject_txt);
            taskDescription_txt = itemView.findViewById(R.id.taskDescription_txt);
            taskDate_txt = itemView.findViewById(R.id.taskDate_txt);
            mainLayout = itemView.findViewById(R.id.mainLayout);

        }

    }

    ;
}

1 个答案:

答案 0 :(得分:0)

在MainActivity的onResume刷新recycle视图

@Override
public void onResume() {     
    super.onResume();
    storeDataArray();
}
相关问题