簡體   English   中英

如果我在 recyclerview 中添加 n 個數據,它只顯示 n-1 個數據。當我添加第 n+1 個數據時,它顯示第 n 個數據

[英]If I am adding n data in recyclerview it is displaying n-1 data only.it is showing n th data when I add the n+1 th data

我正在制作一個待辦事項應用程序,其中我使用了一個 fab,單擊它會打開一個包含編輯文本的對話框。當用戶輸入數據時,我使用 addnewdata() 方法將其動態地放入 recyclerview 中。 問題是當用戶輸入數據時,以前輸入的數據顯示在列表中,如果我添加 n 個項目,它只顯示 n-1 個列表。 在這種情況下我該怎么辦?

public class CustomAdapter extends RecyclerView.Adapter<CustomAdapter.MyViewholder> {
    Context context;
    String EnterTitle, EnterDesc;
    private List<Todo> todolist;
    public CustomAdapter(List<Todo> todolist) {

        this.todolist = todolist;
    }

    @NonNull
    @Override
    public MyViewholder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View itemView = LayoutInflater.from(parent.getContext())
                .inflate(R.layout.tasktheme, parent, false);
        return new MyViewholder(itemView);
    }

    @Override
    public void onBindViewHolder(@NonNull MyViewholder holder, int position) {
        Todo todo = todolist.get(position);
        holder.titletext.setText(todo.getTitle());
        holder.desctext.setText(todo.getDescription());

    }


    @Override
    public int getItemCount() {
        System.out.println("The size of the recycler view adapter is ====================================" + todolist.size());
        return todolist.size();

    }

    public class MyViewholder extends RecyclerView.ViewHolder {

        public TextView titletext, desctext;


        public MyViewholder(@NonNull View itemView) {
            super(itemView);

            titletext = itemView.findViewById(R.id.tv_title);
            desctext = itemView.findViewById(R.id.tv_desc);

        }
    }
}

這是我的主要活動

public class MainActivity extends AppCompatActivity implements AddTaskDialog.DialogListner {
    private RecyclerView recyclerView;
    private List<Todo> todolist = new ArrayList<>();
    private CustomAdapter customAdapter;

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

        customAdapter = new CustomAdapter(todolist);
        LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getApplicationContext());
        recyclerView.setLayoutManager(linearLayoutManager);
        recyclerView.setAdapter(customAdapter);


        FloatingActionButton fab=findViewById(R.id.fab1);
        fab.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Toast.makeText(MainActivity.this,"Floating Action Button",Toast.LENGTH_SHORT).show();
                openDialog();

            }
        });
    addNewData("1 ", "Bhojani");
    addNewData("2 ", "Bhojani");
    addNewData("3 ", "Bhojani");
    addNewData("4 ", "Bhojani");
    addNewData("5 ", "Bhojani");
    addNewData("6 ", "Bhojani");
    addNewData("7 ", "Bhojani");
    addNewData("8 ", "Bhojani");
    }

    private void openDialog() {
        AddTaskDialog addDialog = new AddTaskDialog();
        addDialog.show(getSupportFragmentManager(),"example dialog");

    }

    private void addNewData(String Title, String Description) {
        Todo todo = new Todo(Title,Description);
        todolist.add(todo);
        customAdapter.notifyDataSetChanged();
    }

    @Override
    public void addListItem(String data_title, String data_Description) {
addNewData(data_title,data_Description);
    }
}


**This is my dialog classs**
public class AddTaskDialog extends AppCompatDialogFragment {
    private EditText Title,Description;
    private DialogListner listner;

    @Override
    public void onAttach(@NonNull Context context) {
        super.onAttach(context);


        try {
            listner=(DialogListner) context;
        }
        catch (ClassCastException ex){
            throw  new ClassCastException(context.toString()+"must implement ExamplDialogListner");
        }
    }

    @NonNull
    @Override
    public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
        AlertDialog.Builder builder=new AlertDialog.Builder(getActivity());
        LayoutInflater inflater=getActivity().getLayoutInflater();
        View view= inflater.inflate(R.layout.layout_dialougr,null);
        Title= view.findViewById(R.id.et_title);
        Description=view.findViewById(R.id.et_description);

        builder.setView(view)
                .setTitle("New Task")
                .setPositiveButton("Save", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialogInterface, int i) {
                         String data_title=Title.getText().toString();
                         String data_description =Description.getText().toString();

                        listner.addListItem(data_title,data_description);
                    }
                });



    return builder.create();

    }

    public interface  DialogListner{

        void addListItem(String data_title,String data_Description);

    }
}

您應該在您的適配器中創建一個 function 作為

fun submitList(itemList: List<Item>) {
    list = itemList
}

此處的列表是在回收站視圖頂部聲明的項目列表。現在從 main 調用適配器的 function 並將列表傳遞到那里

暫無
暫無

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

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