i use listview, when i try to update the listview but not change
i put method updateTggl()
in SaveData()
, so when i save data, the list is change but not work
here is my method
private void updateTggl()
{
DatabaseHelper dbConnector = new DatabaseHelper(this);
if (getIntent().getExtras() != null)
{
dbConnector.updateTanggal(rowID,tglEt.getText().toString());
}
}
this is code updateTanggal Method
public void updateTanggal(long id, String tglb)
{
ContentValues editTgl = new ContentValues();
editTgl.put("tglb", tglb);
SQLiteDatabase db = this.getWritableDatabase();
db.update("petak_tetap", editTgl, "_id=" + id, null);
db.close();
}
code to call the listview
db = new DatabaseHelper(this);
constantsCursor = db.getReadableDatabase().rawQuery(
"SELECT _ID, alamat, tglb " + "FROM petak_tetap ORDER BY _ID",
null);
ListAdapter adapter = new SimpleCursorAdapter(this, R.layout.row,
constantsCursor, new String[] { DatabaseHelper.ID,
DatabaseHelper.ALAMAT, DatabaseHelper.TANGGAL_AKHIR },
new int[] { R.id.id, R.id.alamat, R.id.tglakhir });
setListAdapter(adapter);
registerForContextMenu(getListView());
here is full code activity
package hariff.ltis.petaktetap;
import hariff.ltis.mainmenu.R;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import android.app.AlertDialog;
import android.app.DatePickerDialog;
import android.app.Dialog;
import android.app.ListActivity;
import android.content.ContentValues;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.view.ContextMenu;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.EditText;
import android.widget.ListAdapter;
import android.widget.SimpleCursorAdapter;
import android.widget.TextView;
public class MainPetakTetap extends ListActivity {
private int year;
private int month;
private int day;
static final int DATE_DIALOG_ID = 999;
private LocationManager lm;
private LocationListener locListener;
private TextView latTxt, lonTxt;
public static final int DIALOG_DATE_AWAL = 5;
public static final int DIALOG_DATE_AKHIR = 6;
Intent intent = null;
private static final int ADD_ID = Menu.FIRST + 1;
private static final int DELETE_ID = Menu.FIRST + 3;
private static final int UPDATE_ID = Menu.FIRST + 4;
private static final int DETAIL_ID = Menu.FIRST + 5;
private static final int CANCEL = Menu.FIRST + 6;
public static final int SHOW_SUB_ACTIVITY_VIEW = 3;
private DatabaseHelper db = null;
private DatabaseHelper ds = null;
private Cursor constantsCursor = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.banner);
//ds = new DatabaseHelper(getApplicationContext());
//ds.loadAll();
db = new DatabaseHelper(this);
constantsCursor = db.getReadableDatabase().rawQuery(
"SELECT _ID, alamat, tglb " + "FROM petak_tetap ORDER BY _ID",
null);
ListAdapter adapter = new SimpleCursorAdapter(this, R.layout.row,
constantsCursor, new String[] { DatabaseHelper.ID,
DatabaseHelper.ALAMAT, DatabaseHelper.TANGGAL_AKHIR },
new int[] { R.id.id, R.id.alamat, R.id.tglakhir });
setListAdapter(adapter);
registerForContextMenu(getListView());
Button button = (Button) findViewById(R.id.btnKembali);
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// Perform action on click
LogOut();
setResult(RESULT_OK, null);
finish();
}
});
button = (Button) findViewById(R.id.btnDataBaru);
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// Perform action on click
add();
}
});
}// onCreate
private void LogOut(){
}//LogOut
@Override
public void onDestroy() {
super.onDestroy();
constantsCursor.close();
db.close();
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenu.ContextMenuInfo menuInfo) {
menu.add(Menu.NONE, DETAIL_ID, Menu.NONE, "Detail");
menu.add(Menu.NONE, UPDATE_ID, Menu.NONE, "Update");
menu.add(Menu.NONE, DELETE_ID, Menu.NONE, "Delete");
menu.add(Menu.NONE, CANCEL, Menu.NONE, "Back")
.setAlphabeticShortcut('d');
}
@Override
public boolean onContextItemSelected(MenuItem item) {
switch (item.getItemId()) {
case DETAIL_ID:
AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) item
.getMenuInfo();
detail(info.id);
return (true);
case DELETE_ID:
AdapterView.AdapterContextMenuInfo infoDetail = (AdapterView.AdapterContextMenuInfo) item
.getMenuInfo();
delete(infoDetail.id);
return (true);
case UPDATE_ID:
AdapterView.AdapterContextMenuInfo infoCode = (AdapterView.AdapterContextMenuInfo) item
.getMenuInfo();
addCode(infoCode.id);
return (true);
case CANCEL:
}
return (super.onOptionsItemSelected(item));
}
private LocationManager lman;
private LocationListener locaListener;
private TextView latTxtt, lonTxtt;
private EditText tvDisplayDateAwal, tvDisplayDateAkhir;
private DatePicker dpResult;
private void add() {
LayoutInflater inflater = LayoutInflater.from(this);
View addView = inflater.inflate(R.layout.add_edit, null);
latTxtt = (TextView) addView.findViewById(R.id.latitudeTxtt);
lonTxtt = (TextView) addView.findViewById(R.id.longitudeTxtt);
lman = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
locaListener = new MyLocationListenerDialog();
lman.requestLocationUpdates(LocationManager.GPS_PROVIDER, 10, 10,
locaListener);
final DialogWrapper wrapper = new DialogWrapper(addView);
tvDisplayDateAwal = (EditText) addView.findViewById(R.id.tglawal);
tvDisplayDateAkhir = (EditText) addView.findViewById(R.id.tglakhir);
dpResult = (DatePicker) addView.findViewById(R.id.dpResult);
dpResult.setVisibility(View.GONE);
final Calendar c = Calendar.getInstance();
year = c.get(Calendar.YEAR);
month = c.get(Calendar.MONTH);
day = c.get(Calendar.DAY_OF_MONTH);
// set current date into textview
tvDisplayDateAkhir.setText(new StringBuilder()
// Month is 0 based, just add 1
.append(day).append("-").append(month + 1).append("-")
.append(year).append(" "));
// set current date into datepicker
dpResult.init(year, month, day, null);
Date date1 = (Date) new Date(dpResult.getYear() - 1900,
dpResult.getMonth(), dpResult.getDayOfMonth());
SimpleDateFormat dates = new SimpleDateFormat("dd-MM-yyyy");
String dateString = dates.format(date1);
tvDisplayDateAkhir.setText(dateString);
View showDlgAwal = addView.findViewById(R.id.tglawal);
showDlgAwal.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// Perform action on click
showDialog(DIALOG_DATE_AWAL);
}
});
View showDlgAkhir = addView.findViewById(R.id.tglakhir);
showDlgAkhir.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// Perform action on click
showDialog(DIALOG_DATE_AKHIR);
}
});
Dialog dialog = null;
new AlertDialog.Builder(this)
.setTitle(R.string.add_title)
.setView(addView)
.setPositiveButton(R.string.ok,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int whichButton) {
processAdd(wrapper);
// stop gps
lman.removeUpdates(locaListener);
}
})
.setNegativeButton(R.string.cancel,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int whichButton) {
// stop the gps when cancel
lman.removeUpdates(locaListener);
}
}).show();
}// akhir fungsi add
public Dialog onCreateDialog(int id) {
switch (id) {
case (DIALOG_DATE_AWAL):
return new DatePickerDialog(this, datePickerListenerAwal, year,
month, day);
case (DIALOG_DATE_AKHIR):
return new DatePickerDialog(this, datePickerListenerAkhir, year,
month, day);
}
return null;
}// onCreateDialog
// isi dialog awal
private DatePickerDialog.OnDateSetListener datePickerListenerAwal = new DatePickerDialog.OnDateSetListener() {
// when dialog box is closed, below method will be called.
public void onDateSet(DatePicker view, int selectedYear,
int selectedMonth, int selectedDay) {
year = selectedYear;
month = selectedMonth;
day = selectedDay;
// set selected date into textview
tvDisplayDateAwal.setText(new StringBuilder().append(day)
.append("-").append(month + 1).append("-").append(year)
.append(" "));
// set selected date into datepicker also
dpResult.init(year, month, day, null);
Date date1 = (Date) new Date(dpResult.getYear() - 1900,
dpResult.getMonth(), dpResult.getDayOfMonth());
SimpleDateFormat dates = new SimpleDateFormat("dd-MM-yyyy");
String dateString = dates.format(date1);
tvDisplayDateAwal.setText(dateString);
}
};
// isi dialog akhir
private DatePickerDialog.OnDateSetListener datePickerListenerAkhir = new DatePickerDialog.OnDateSetListener() {
// when dialog box is closed, below method will be called.
public void onDateSet(DatePicker view, int selectedYear,
int selectedMonth, int selectedDay) {
year = selectedYear;
month = selectedMonth;
day = selectedDay;
// set selected date into textview
tvDisplayDateAkhir.setText(new StringBuilder().append(day)
.append("-").append(month + 1).append("-").append(year)
.append(" "));
// set selected date into datepicker also
dpResult.init(year, month, day, null);
Date date1 = (Date) new Date(dpResult.getYear() - 1900,
dpResult.getMonth(), dpResult.getDayOfMonth());
SimpleDateFormat dates = new SimpleDateFormat("dd-MM-yyyy");
String dateString = dates.format(date1);
tvDisplayDateAkhir.setText(dateString);
}
};
private class MyLocationListenerDialog implements LocationListener {
@Override
public void onLocationChanged(Location loc) {
// TODO Auto-generated method stub
if (loc != null) {
latTxtt.setText(String.valueOf(loc.getLatitude()));
lonTxtt.setText(String.valueOf(loc.getLongitude()));
}
}
@Override
public void onProviderDisabled(String provider) {
// TODO Auto-generated method stub
}//onProviderDisabled
@Override
public void onProviderEnabled(String provider) {
// TODO Auto-generated method stub
}//onProviderEnabled
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
// TODO Auto-generated method stub
}//onStatusChanged
protected void onPause() {
lman.removeUpdates(locaListener);
onPause();
}
private void stopListening() {
if (lman != null) {
lman.removeUpdates(this);
}
}
}
private void detail(final long rowId) {
if (rowId > 0) {
LayoutInflater inflater = LayoutInflater.from(this);
View addView = inflater.inflate(R.layout.detail_tetap, null);
final DialogWrapper wrapper = new DialogWrapper(addView);
TextView idDt = (TextView) addView.findViewById(R.id.idDetail);
TextView codeTxtDt = (TextView) addView
.findViewById(R.id.codeDetail);
TextView alamatTxtDt = (TextView) addView
.findViewById(R.id.alamatDetail);
TextView batasTxtDt = (TextView) addView
.findViewById(R.id.batasDetail);
TextView latTxtDt = (TextView) addView.findViewById(R.id.latDetail);
TextView lonTxtDt = (TextView) addView.findViewById(R.id.lonDetail);
TextView luasTxtDt = (TextView) addView
.findViewById(R.id.luasDetail);
TextView tglAwaltxtDt = (TextView) addView
.findViewById(R.id.tglAwalDetail);
TextView tglAkhirtxtDt = (TextView) addView
.findViewById(R.id.tglAkhirDetail);
// View editTextHidden = (EditText) findViewById(R.id.txtHidden);
// database handler
DatabaseHelper db = new DatabaseHelper(getApplicationContext());
// Spinner Drop down elements
SQLiteDatabase dbs = db.getReadableDatabase();
Cursor cursor = dbs.rawQuery("SELECT * FROM petak_tetap where _ID="
+ rowId + "", null);
if (cursor.moveToFirst()) {
do {
String noId = cursor.getString(0); // Here you can get data
// from table and stored
// in string if it has
// only one string.
String code = cursor.getString(1);
String alamat = cursor.getString(2);
String batas = cursor.getString(3);
String lat = cursor.getString(4);
String lon = cursor.getString(5);
String luas = cursor.getString(6);
String tglAwal = cursor.getString(7);
String tglAkhir = cursor.getString(8);
idDt.setText(noId);
codeTxtDt.setText(code);
alamatTxtDt.setText(alamat);
batasTxtDt.setText(batas);
latTxtDt.setText(lat);
lonTxtDt.setText(lon);
luasTxtDt.setText(luas);
tglAwaltxtDt.setText(tglAwal);
tglAkhirtxtDt.setText(tglAkhir);
} while (cursor.moveToNext());
}
if (cursor != null && !cursor.isClosed()) {
cursor.close();
}
if (db != null) {
db.close();
}
new AlertDialog.Builder(this)
.setTitle(R.string.detail_title)
.setView(addView)
.setPositiveButton(R.string.ok,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int whichButton) {
// ignore, just dismiss
}
}).show();
}
}
private void addCode(final long rowId) {
if (rowId > 0) {
// View editTextHidden = (EditText) findViewById(R.id.txtHidden);
// database handler
DatabaseHelper db = new DatabaseHelper(getApplicationContext());
// Spinner Drop down elements
SQLiteDatabase dbs = db.getReadableDatabase();
Cursor cursor = dbs.rawQuery("SELECT * FROM petak_tetap where _ID="
+ rowId + "", null);
if (cursor.moveToFirst()) {
do {
String noId = cursor.getString(0); // Here you can get data
// from table and stored
// in string if it has
// only one string.
String code = cursor.getString(1);
String alamat = cursor.getString(2);
String batas = cursor.getString(3);
String lat = cursor.getString(4);
String lon = cursor.getString(5);
String luas = cursor.getString(6);
String tglAwal = cursor.getString(7);
String tglAkhir = cursor.getString(8);
Intent intent = new Intent(MainPetakTetap.this, MainUpdate.class);
intent.putExtra("new_variable_name",code);
intent.putExtra("row_id",noId);
intent.putExtra("tanggal_akhir",tglAkhir);
startActivity(intent);
} while (cursor.moveToNext());
}
if (cursor != null && !cursor.isClosed()) {
cursor.close();
}
if (db != null) {
db.close();
}
//Bundle extras = new Bundle();
//intent.putExtras(extras);
}
}
private void delete(final long rowId) {
if (rowId > 0) {
new AlertDialog.Builder(this)
.setTitle(R.string.delete_title)
.setPositiveButton(R.string.ok,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int whichButton) {
processDelete(rowId);
}
})
.setNegativeButton(R.string.cancel,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int whichButton) {
// ignore, just dismiss
}
}).show();
}
}
private void processAdd(DialogWrapper wrapper) {
ContentValues values = new ContentValues(2);
values.put(DatabaseHelper.CODE, wrapper.getCode());
values.put(DatabaseHelper.ALAMAT, wrapper.getAlamat());
values.put(DatabaseHelper.BATAS, wrapper.getBatas());
values.put(DatabaseHelper.LAT, wrapper.getLat());
values.put(DatabaseHelper.LON, wrapper.getLon());
values.put(DatabaseHelper.LUAS, wrapper.getLuas());
values.put(DatabaseHelper.TANGGAL_AWAL, wrapper.getTglA());
values.put(DatabaseHelper.TANGGAL_AKHIR, wrapper.getTglB());
db.getWritableDatabase().insert("petak_tetap", DatabaseHelper.ALAMAT,
values);
constantsCursor.requery();
}
private void processDelete(long rowId) {
String[] args = { String.valueOf(rowId) };
db.getWritableDatabase().delete("petak_tetap", "_ID=?", args);
constantsCursor.requery();
}
class DialogWrapper {
EditText codeField = null;
EditText alamatField = null;
EditText batasField = null;
EditText luasField = null;
EditText tglAField = null;
EditText tglBField = null;
TextView latField = null;
TextView lonField = null;
View base = null;
DialogWrapper(View base) {
this.base = base;
tglBField = (EditText) base.findViewById(R.id.tglakhir);
}
String getCode() {
return (getCodeField().getText().toString());
}
String getAlamat() {
return (getAlamatField().getText().toString());
}
String getBatas() {
return (getBatasField().getText().toString());
}
String getLuas() {
return (getLuasField().getText().toString());
}
String getTglA() {
return (getTglAField().getText().toString());
}
String getTglB() {
return (getTglBField().getText().toString());
}
String getLat() {
return (getLatField().getText().toString());
}
String getLon() {
return (getLonField().getText().toString());
}
private EditText getCodeField() {
if (codeField == null) {
codeField = (EditText) base.findViewById(R.id.code);
}
return (codeField);
}
private EditText getAlamatField() {
if (alamatField == null) {
alamatField = (EditText) base.findViewById(R.id.alamat);
}
return (alamatField);
}
private EditText getBatasField() {
if (batasField == null) {
batasField = (EditText) base.findViewById(R.id.batas);
}
return (batasField);
}
private TextView getLatField() {
if (latField == null) {
latField = (TextView) base.findViewById(R.id.latitudeTxtt);
}
return (latField);
}
private TextView getLonField() {
if (lonField == null) {
lonField = (TextView) base.findViewById(R.id.longitudeTxtt);
}
return (lonField);
}
private EditText getLuasField() {
if (luasField == null) {
luasField = (EditText) base.findViewById(R.id.luas);
}
return (luasField);
}
private EditText getTglAField() {
if (tglAField == null) {
tglAField = (EditText) base.findViewById(R.id.tglawal);
}
return (tglAField);
}
private EditText getTglBField() {
if (tglBField == null) {
tglBField = (EditText) base.findViewById(R.id.tglakhir);
}
return (tglBField);
}
}
}
how to fix it?
update sqlite not working in listview android
You did not specify which kind of adapter you are using. But probably some CursorAdapter
.
So you should call cursor.requery()
or you can perform query again to get fresh Cursor and then swap this new one into CursorAdapter.
Also you can try to use changeCursor()
or swapCursor()
on your Adapter if first approach wo't work.
yourAdapter.changeCursor(newCursor);
And if you are not using CursorAdapter there are method notifyDataSetChanged()
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.