【发布时间】:2021-11-23 14:00:22
【问题描述】:
这是我调用 showData 函数并传递给的主要活动 适配器
public class MainActivity extends AppCompatActivity {
Button add,add1;
ListView list;
Database db;
ArrayList<studentmodel>data;
EditText roll, name, fname, student_class;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
db = new Database(this);
add = findViewById(R.id.btnAdd);
list=findViewById(R.id.list_item);
data=new ArrayList<>();
data=db.showData();
CustomAdapter ad=new CustomAdapter(this,data);
list.setAdapter(ad);
data=db.showData();
ad.notifyDataSetChanged();
}
}
这是我的自定义适配器
public class CustomAdapter extends ArrayAdapter {
ArrayList<studentmodel> student;
Context context;
public CustomAdapter(@NonNull Context context, ArrayList<studentmodel> student) {
super(context, R.layout.customlayout, student);
this.context = context;
this.student = student;
}
public studentmodel getItem(int position) {
return student.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@NonNull
@Override
public View getView(int position, View i, ViewGroup parent) {
View view = LayoutInflater.from(context).inflate(R.layout.customlayout, parent, false);
studentmodel s1 = student.get(position);
TextView adresult=view.findViewById(R.id.txtAddResult);
TextView delete=view.findViewById(R.id.txtDeleteResult);
TextView name=view.findViewById(R.id.txtName);
TextView s_class=view.findViewById(R.id.txts_class);
TextView roll=view.findViewById(R.id.txtRoll);
name.setText(s1.getStudent_name());
s_class.setText(s1.getStudent_class());
roll.setText(String.valueOf(s1.getStudent_roll()));
adresult.setOnClickListener(v -> {
Intent intent=new Intent(context,AddResult.class);
context.startActivity(intent);
});
return view;
}
}
这是我添加学生信息的对话框
AlertDialog.Builder builder=new AlertDialog.Builder(this);
View view=LayoutInflater.from(this).inflate(R.layout.customdialog,null);
builder.setView(view);
name=view.findViewById(R.id.edtName);
roll=view.findViewById(R.id.edtRoll);
student_class=view.findViewById(R.id.EdtClassName);
add1=view.findViewById(R.id.btnadd);
add1.setOnClickListener(v1 -> {
String sname=name.getText().toString();
String sturoll=roll.getText().toString();
String sclass=student_class.getText().toString();
if(sname.equals("")||roll.equals("")||sclass.equals(""))
{
Toast.makeText(MainActivity.this, "Please fill all fields", Toast.LENGTH_SHORT).show();
}
else {
int sroll = Integer.parseInt(sturoll);
studentmodel student = new studentmodel(sroll, sname, sclass);
int i = db.studentInsertion(student);
if (i == 1) {
Toast.makeText(MainActivity.this, "Data is inserted", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(MainActivity.this, "Data is not inserted", Toast.LENGTH_SHORT).show();
}
}
});builder.show();
}
}
当我第一次打开我的应用程序时,会显示学生的数据,但是 当我在对话框的帮助下在数据库中插入新数据时,此数据不会显示在 ListView 中,但是当我完成我的应用程序并重新打开时,我会看到我输入的学生节目信息和旧数据。我想在输入时查看我的数据而不关闭我的应用程序
【问题讨论】:
-
插入完成后致电
notifyDataSetChanged() -
我在插入后使用 notifyDataSetChanged() 但它不起作用