2017-08-25 72 views
0

所以我試圖做筆記或待辦事項應用程序 當我插入數據的數據插入到數據庫中,但當我回去時它沒有更新的主要菜單 所以這裏的MainActivity雖然點擊後退按鈕MainActivity沒有得到更新

package com.frolicfreak.bhushan.memo; 
    import android.content.Intent; 
import android.database.Cursor; 
import android.database.sqlite.SQLiteDatabase; 
import android.database.sqlite.SQLiteOpenHelper; 
import android.support.design.widget.FloatingActionButton; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.ContextMenu; 
import android.view.MenuInflater; 
import android.view.MenuItem; 
import android.view.View; 
import android.widget.AdapterView; 
import android.widget.ArrayAdapter; 
import android.widget.ListAdapter; 
import android.widget.ListView; 
import android.widget.Toast; 

import java.util.ArrayList; 
import java.util.List; 

import static com.frolicfreak.bhushan.memo.DatabaseHelper.Table_Name; 
import static com.frolicfreak.bhushan.memo.DatabaseHelper.col1; 
import static com.frolicfreak.bhushan.memo.DatabaseHelper.col2; 

public class MainActivity extends AppCompatActivity implements View.OnClickListener{ 

FloatingActionButton fab; 
DatabaseHelper mydb; 

ListView listView; 
ArrayAdapter<String> mAdapter; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    mydb =new DatabaseHelper(this); 

    fab= (FloatingActionButton)findViewById(R.id.fab); 
    fab.setOnClickListener(this); 

    ListView listView = (ListView)findViewById(R.id.list); 
    registerForContextMenu(listView); 

    ArrayList<String> theList =new ArrayList<>(); 
    Cursor data= mydb.getAllData(); 

    if (data.getCount()==0){ 
     Toast.makeText(MainActivity.this,"data not inserted",Toast.LENGTH_LONG).show(); 
    } 
    else 
    { 
     while(data.moveToNext()){ 
      theList.add(data.getString(1)); 
      ListAdapter listAdapter=new ArrayAdapter<>(this,android.R.layout.simple_list_item_1,theList); 
      listView.setAdapter(listAdapter); 
     } 
    } 
} 

@Override 
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) { 
    super.onCreateContextMenu(menu, v, menuInfo); 
    if (v.getId()==R.id.list) { 
     MenuInflater inflater = getMenuInflater(); 
     inflater.inflate(R.menu.menu, menu); 
    } 
} 

@Override 
public boolean onContextItemSelected(MenuItem item) { 
    AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo(); 
    switch(item.getItemId()) { 
     case R.id.edit: 
      // edit stuff here 
      return true; 
     case R.id.delete: 
      int count = mydb.deleterow(Table_Name, col1); 
      return true; 
     default: 
      return super.onContextItemSelected(item); 
    } 
} 


@Override 
public void onClick(View v) { 

    Intent intent= new Intent(this,Main2Activity.class); 
    startActivity(intent); 

} 
} 

和我DatabaaseHelper的java文件

package com.frolicfreak.bhushan.memo; 

import android.content.ContentValues; 
import android.content.Context; 
import android.database.Cursor; 
import android.database.sqlite.SQLiteDatabase; 
import android.database.sqlite.SQLiteOpenHelper; 

import java.util.ArrayList; 

/** 
    * Created by BHUSHAN on 24-08-2017. 
*/ 

public class DatabaseHelper extends SQLiteOpenHelper { 

public static final String Database_Name = "Memo.db"; 
public static final String Table_Name = "Memo"; 
public static final String col1 = "ID"; 
public static final String col2 = "data"; 


public DatabaseHelper(Context context) { 
    super(context, Database_Name, null, 1); 
} 

@Override 
public void onCreate(SQLiteDatabase db) { 

    db.execSQL("create table " + Table_Name + "(ID integer primary key autoincrement, data text)"); 

} 

@Override 
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
    db.execSQL("drop table if exists " + Table_Name); 
    onCreate(db); 
} 

public boolean insertData(String data, String Data) { 
    SQLiteDatabase db = this.getWritableDatabase(); 
    ContentValues contentValues = new ContentValues(); 
    contentValues.put(col2, Data); 
    long result = db.insert(Table_Name, null, contentValues); 
    if (result==-1) 
     return false; 
    else 
     return true; 
} 

public ArrayList<String> getList(){ 
    ArrayList<String> taskList = new ArrayList<>(); 
    SQLiteDatabase db = this.getReadableDatabase(); 
    Cursor cursor= db.query(Table_Name,new String[]{col1},new String(col2),null,null,null,null); 
    while (cursor.moveToNext()){ 
     int index= cursor.getColumnIndex(col1); 
     taskList.add(cursor.getString(index)); 
    } 
    cursor.close(); 
    db.close(); 
    return taskList; 
} 

public Cursor getAllData() { 

    SQLiteDatabase db = this.getWritableDatabase(); 
    Cursor res = db.rawQuery("SELECT * FROM " + Table_Name, null); 
    return res; 
} 


public int deleterow(String table_Name, String col1) { 
    SQLiteDatabase db = this.getReadableDatabase(); 
    int count = db.delete(Table_Name, DatabaseHelper.col1, null); 
    return count; 
} 
} 

Main2Activity

package com.frolicfreak.bhushan.memo; 

import android.support.design.widget.FloatingActionButton; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.EditText; 
import android.widget.Toast; 

public class Main2Activity extends AppCompatActivity { 
DatabaseHelper db; 

EditText Data; 
FloatingActionButton add; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main2); 

    db = new DatabaseHelper(this); 

    Data = (EditText)findViewById(R.id.edit); 
    add =(FloatingActionButton)findViewById(R.id.add); 

    AddData(); 
} 

public void AddData(){ 
    add.setOnClickListener(
      new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        boolean isInserted = db.insertData(Data.getText().toString(), 
          Data.getText().toString()); 
        if (isInserted==true) 
         Toast.makeText(Main2Activity.this,"data inserted",Toast.LENGTH_LONG).show(); 
        else 
         Toast.makeText(Main2Activity.this,"data not inserted",Toast.LENGTH_LONG).show(); 
       } 
      } 
    ); 
} 

} 

現在還有一件事其實我是想編輯和更新數據(選件)也因此,如果有人能幫助我嗎? 當我從所有數據獲取刪除當我重新打開應用程序 所以請太 三江源幫助提前列表中刪除任何數據

回答

0

,你應該從數據庫中獲取你的數據的onResume函數,而不是在OnCreate 。

這段代碼添加到您的mainactivity

@Override 
public void onResume() { 
    super.onResume(); 
    ArrayList<String> theList =new ArrayList<>(); 
    Cursor data= mydb.getAllData(); 
    listView.setAdapter(null); 

    if (data.getCount()==0){ 
     Toast.makeText(MainActivity.this,"data not inserted",Toast.LENGTH_LONG).show(); 
    } 
    else 
    { 
     while(data.moveToNext()){ 
      theList.add(data.getString(1)); 
      ListAdapter listAdapter=new ArrayAdapter<>(this,android.R.layout.simple_list_item_1,theList); 
      listView.setAdapter(listAdapter); 
     } 
    } 
} 
+0

剛開錯誤 '了java.lang.RuntimeException:無法恢復活動{com.frolicfreak.bhushan.memo/com.frolicfreak.bhushan.memo。 MainActivity}:java.lang.NullPointerException:嘗試在空對象引用上調用虛擬方法'void android.widget.ListView.setAdapter(android.widget.ListAdapter)' –

+0

可以添加listView =(ListView)findViewById(R。 id.list);就在listView.setAdapter(null)之前;行 – hasbi

+0

謝謝你這麼多 當我刪除數據整個表的任何意見被刪除 –