2016-12-24 7 views
0

listview은 몇 가지 항목으로 초기화되었습니다. 바에는 dialog이 열리는 항목을 추가 할 수있는 옵션이 있으며 세 필드를 입력해야합니다. 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, 웹의 데이터 저장을위한 Sqlite 데이터베이스를 사용해야합니다. MySQl을 사용할 수 있습니다.

이제 로컬 메모리에 저장된 항목을 목록보기에서 새 항목을 추가하고 데이터 모델을 사용하여 데이터를 관리하고 응용 프로그램을 종료하면 로컬 메모리가 지워지고 다시 응용 프로그램을 실행하면 응용 프로그램에는 응용 프로그램이 목록보기에서 항목을 표시하지 않는 데이터가 없습니다. 위에서 설명한대로 이러한 데이터 사용 데이터베이스를 저장하려고합니다.

+0

이 응용 프로그램에서 sqlitedatabase를 사용했습니다 –

+0

활동이 시작될 때 sqlite에서 데이터를 가져 오는 중입니까? –

+0

예,'db'는'sqlite'에서 데이터를 가져 오는'sqlitehelper' 클래스의 객체입니다. –