2016-12-24 5 views
0

私はlistviewをいくつかのエントリで初期化しています。 バーには、dialogがオープンされているエントリを追加するオプションがあり、3つのフィールドを入力する必要があります。 saveボタンをクリックすると、エントリはlistviewに表示されますが、戻るボタンを押すと、古いlistviewが表示されます。つまり、listviewに新しく入力された値は表示されません。戻るボタンを押すと、ListViewの新しいエントリが消えます

メインコード:

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); 
     //savedInstanceState.putBoolean("mIsBackButtonPressed",mIsBackButtonPressed); 
     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 onBackPressed() { 
     super.onBackPressed(); 
    } 

    @Nullable 
    @Override 
    public View onCreateView(String name, Context context, AttributeSet attrs) { 

     return super.onCreateView(name, context, attrs); 
    } 

    @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(); 
        list.add(selectedModel); 
        // Log.i("Second Screen","list length after "+list.size()); 
        // Adapter adapter =(Adapter)getListView().getAdapter(); 
        //adapter=new Adapter(this,R.layout.row,list); 
        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; 
    } 


} 

任意の提案ですか?

+0

私はあなたのdb.insertTask(selectedModel)に問題があると思います。メソッド – NehaK

答えて

0

実際には、値を保存したい場合は、SharedPreference、Webのデータを格納するSqliteデータベース、MySQlを使用できます。

ローカルメモリに保存されたアイテムをリストビューで追加し、それらのデータを管理するためにデータモデルを使用していて、アプリケーションを終了するとローカルメモリがクリアされ、再度アプリケーションを実行すると、アプリケーションにはリストビューの項目が表示されない理由があるデータはありません。あなたが上記のようにそれらのデータ使用データベースを保存したい場合。

+0

私はこのアプリケーションでsqlitedatabaseを使用しました –

+0

アクティビティの開始時にsqliteからデータをフェッチしていますか? –

+0

はい、 'db'は' sqlite'からデータを取り出す 'sqlitehelper'クラスのオブジェクトです。 –

関連する問題