在数据库中输入元素后,ListView未获得更新

时间:2016-12-24 07:33:49

标签: android sqlite listview

我有listviewdialog。我必须从dialog中获取三个输入,然后在我listview的{​​{1}}中实现它。我使用sqlitedatabasecustomised adapter中插入条目。但是,只要在listview中插入条目后点击save buttondialog以及database就会更新,但会显示listview在屏幕上,我没有显示我应用listview的条目,但它不起作用。有什么建议吗?

adapter.notifyDataSetChanged()

的功能
save button

我定义所有功能的主要类:

save_button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                selectedModel=new Model();
                selectedModel.setTask_title(task_Title.getText().toString());
                selectedModel.setTask_description(task_Description.getText().toString());
                selectedModel.setTask_date(task_Date.getText().toString());
                db.insertTask(selectedModel);
                Toast.makeText(getApplicationContext(),"model ="+selectedModel.getTask_title(),Toast.LENGTH_LONG).show();
                Log.i("Second Screen","list length before "+list.size());
                list=db.getAllTasks();

                Log.i("Second Screen","list length after "+list.size());
                Adapter adapter =( Adapter)getListView().getAdapter();
                adapter.notifyDataSetChanged();
                //Toast.makeText(getApplicationContext(),"model ="+selectedModel.getTask_title(),Toast.LENGTH_LONG).show();
                dialog.dismiss();

            }
        });

}

我使用了public class SecondScreen extends ListActivity implements AppCompatCallback,AdapterView.OnItemClickListener { private Toolbar bar; private AppCompatDelegate delegate; List<Model> list; Model selectedModel; AGSQLiteHelper db; Adapter adapter; private EditText task_Title,task_Description,task_Date; @Override protected void onCreate(Bundle savedInstanceState) { delegate=AppCompatDelegate.create(this,this); super.onCreate(savedInstanceState); delegate.setContentView(R.layout.activity_second_screen); bar=(Toolbar)findViewById(R.id.toolbarID); delegate.setSupportActionBar(bar); ActionBar ab=delegate.getSupportActionBar(); ab.setDisplayHomeAsUpEnabled(true); db=new AGSQLiteHelper(this); db.onUpgrade(db.getWritableDatabase(),1,2); db.createTask(new Model("abcde","description abcde","19/11/12")); db.createTask(new Model("bcdese","description bcdese","18/12/12")); db.createTask(new Model("mnbv","description mnbv","2/11/10")); db.createTask(new Model("poiuy","description poiuy","1/5/6")); list=db.getAllTasks(); adapter=new Adapter(this,R.layout.row,list); getListView().setOnItemClickListener(this); setListAdapter(adapter); } @Override public void onSupportActionModeStarted(ActionMode mode) { } @Override public void onSupportActionModeFinished(ActionMode mode) { } @Nullable @Override public ActionMode onWindowStartingSupportActionMode(ActionMode.Callback callback) { return null; } @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { } @Override public boolean onOptionsItemSelected(MenuItem item) { if(item.getItemId()==R.id.add){ Toast.makeText(getApplicationContext(),"Add was clicked",Toast.LENGTH_LONG).show(); final Dialog dialog=new Dialog(SecondScreen.this); dialog.setContentView(R.layout.custom_dialog); dialog.setTitle("Dialog"); Button save_button=(Button)dialog.findViewById(R.id.saveButtonID); Button cancel_button=(Button)dialog.findViewById(R.id.cancelButtonID); task_Title=(EditText)dialog.findViewById(R.id.titleEditTextID); task_Description=(EditText)dialog.findViewById(R.id.descriptionEditTextID); task_Date=(EditText)dialog.findViewById(R.id.dateEditTextID); dialog.show(); save_button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { selectedModel=new Model(); selectedModel.setTask_title(task_Title.getText().toString()); selectedModel.setTask_description(task_Description.getText().toString()); selectedModel.setTask_date(task_Date.getText().toString()); db.insertTask(selectedModel); Toast.makeText(getApplicationContext(),"model ="+selectedModel.getTask_title(),Toast.LENGTH_LONG).show(); Log.i("Second Screen","list length before "+list.size()); list=db.getAllTasks(); Log.i("Second Screen","list length after "+list.size()); Adapter adapter =( Adapter)getListView().getAdapter(); adapter.notifyDataSetChanged(); //Toast.makeText(getApplicationContext(),"model ="+selectedModel.getTask_title(),Toast.LENGTH_LONG).show(); dialog.dismiss(); } }); cancel_button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { dialog.dismiss(); } }); } if(item.getItemId()==R.id.done){ Toast.makeText(getApplicationContext(),"Done was clicked",Toast.LENGTH_LONG).show(); } return true; } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.menu,menu); return true; } Log来检查ToastlistView是否正在更新。

database类:

customised adapter

}

1 个答案:

答案 0 :(得分:0)

save_button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                selectedModel=new Model();
                selectedModel.setTask_title(task_Title.getText().toString());
                selectedModel.setTask_description(task_Description.getText().toString());
                selectedModel.setTask_date(task_Date.getText().toString());
                db.insertTask(selectedModel);
                Toast.makeText(getApplicationContext(),"model ="+selectedModel.getTask_title(),Toast.LENGTH_LONG).show();
                Log.i("Second Screen","list length before "+list.size());
                list.add(selectedModel);

                Log.i("Second Screen","list length after "+list.size());

                adapter.notifyDataSetChanged();

            }
        });

尝试一次