[英]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.