我有一个Listview
,其项目是从SQLite
数据库中填充的。我使用CursorAdapter
类将数据库中的值设置为ListView
项。一切都好。但我使用删除查询使用OnItemLongClick
从数据库中删除所选项目。它也有效。现在我的问题是删除ListView
后我的Item
没有刷新。我也试过了adapter.notifyDataSetChanged()
。但没有运气。我在这里提供了我的代码。请任何人帮忙。谢谢。
我的包含ListView
的活动是
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_table_bike);
databaseHelper = new DatabaseHelper(this);
bikeList = (ListView) findViewById(R.id.listView2);
tvCount = (TextView) findViewById(R.id.textView133);
bikeList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
TextView textSrNo = (TextView) view.findViewById(R.id.textView29);
srNo = textSrNo.getText().toString();
String selectQuery = "select * from bikeTable where uSerialNo='" + srNo + "'";
SQLiteDatabase db = databaseHelper.getReadableDatabase();
Cursor cursor = db.rawQuery(selectQuery, null);
cursor.moveToFirst();
String strUser = cursor.getString(1);
String strMobile = cursor.getString(2);
String strAddress = cursor.getString(3);
String strSerialNo = cursor.getString(4);
String strImei = cursor.getString(5);
String strCimi = cursor.getString(6);
String strDeviceNo = cursor.getString(7);
String strDealerCode = cursor.getString(8);
String strDealerContact = cursor.getString(9);
cursor.close();
String strTest = strUser + "#" + strMobile + "#" + strAddress + "#" + strSerialNo + "#" + strImei + "#" + strCimi + "#" + strDeviceNo + "#" + strDealerCode + "#" + strDealerContact + "#";
Bundle bundle = new Bundle();
bundle.putString("details", strTest);
Intent bikeIntent = new Intent(TableBikeActivity.this, BikeReport.class);
bikeIntent.putExtras(bundle);
startActivity(bikeIntent);
}
});
int[] colors = {Color.parseColor("#D3D3D3"), Color.parseColor("#D3D3D3"), Color.parseColor("#D3D3D3")};
bikeList.setDivider(new GradientDrawable(GradientDrawable.Orientation.RIGHT_LEFT, colors));
new Handler().post(new Runnable() {
@Override
public void run() {
adapter = new DisplayAdapter(TableBikeActivity.this, databaseHelper.getAllDataBike());
bikeList.setAdapter(adapter);
tvCount.setText(String.valueOf(bikeList.getAdapter().getCount()));
}
});
search = (ImageButton) findViewById(R.id.imageView13);
myFilter = (AutoCompleteTextView) findViewById(R.id.editText2);
search.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final String strFilter = myFilter.getText().toString();
new Handler().post(new Runnable() {
@Override
public void run() {
if (strFilter.equals("")) {
Toast.makeText(TableBikeActivity.this, "Please Enter Valid Serial No.", Toast.LENGTH_SHORT).show();
adapter = new DisplayAdapter(TableBikeActivity.this, databaseHelper.getAllDataBike());
bikeList.setAdapter(adapter);
tvCount.setText(String.valueOf(bikeList.getAdapter().getCount()));
} else {
adapter1 = new SearchDisplayAdapter(TableBikeActivity.this, databaseHelper.searchCustomerBike(strFilter));
bikeList.setAdapter(adapter1);
tvCount.setText(String.valueOf(bikeList.getAdapter().getCount()));
}
}
});
}
});
myFilter.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
final String strFilter = myFilter.getText().toString();
new Handler().post(new Runnable() {
@Override
public void run() {
if (strFilter.equals("")) {
adapter = new DisplayAdapter(TableBikeActivity.this, databaseHelper.getAllDataBike());
bikeList.setAdapter(adapter);
tvCount.setText(String.valueOf(bikeList.getAdapter().getCount()));
} else {
adapter1 = new SearchDisplayAdapter(TableBikeActivity.this, databaseHelper.searchCustomerBike(strFilter));
bikeList.setAdapter(adapter1);
tvCount.setText(String.valueOf(bikeList.getAdapter().getCount()));
}
}
});
}
@Override
public void afterTextChanged(Editable s) {
}
});
radioFilter = (RadioGroup) findViewById(R.id.radioFilter);
radioFilter.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
if (checkedId == R.id.radioAll) {
new Handler().post(new Runnable() {
@Override
public void run() {
adapter = new DisplayAdapter(TableBikeActivity.this, databaseHelper.getAllDataBike());
bikeList.setAdapter(adapter);
tvCount.setText(String.valueOf(bikeList.getAdapter().getCount()));
}
});
} else if (checkedId == R.id.radioActivated) {
new Handler().post(new Runnable() {
@Override
public void run() {
adapter = new DisplayAdapter(TableBikeActivity.this, databaseHelper.getActivated());
bikeList.setAdapter(adapter);
tvCount.setText(String.valueOf(bikeList.getAdapter().getCount()));
}
});
} else if (checkedId == R.id.radioNotActivated) {
new Handler().post(new Runnable() {
@Override
public void run() {
adapter = new DisplayAdapter(TableBikeActivity.this, databaseHelper.getNotActivated());
bikeList.setAdapter(adapter);
tvCount.setText(String.valueOf(bikeList.getAdapter().getCount()));
}
});
}
}
});
final DatabaseHelper databaseHelper = new DatabaseHelper(this);
SQLiteDatabase db = databaseHelper.getReadableDatabase();
String query = "select rowid _id,* from bikeTable where vehicleType='Two Wheeler'";
Cursor cursor = db.rawQuery(query, null);
String strArray[] = new String[cursor.getCount()];
int i = 0;
if (cursor.getCount() > 0) {
while (cursor.moveToNext()) {
String serial = cursor.getString(cursor.getColumnIndex("uSerialNo"));
strArray[i] = serial;
i++;
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_dropdown_item_1line, strArray);
myFilter.setThreshold(1);
myFilter.setAdapter(adapter);
}
} else {
Toast.makeText(TableBikeActivity.this, "Error", Toast.LENGTH_SHORT).show();
}
bikeList.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> parent, final View view, final int position, long id) {
AlertDialog.Builder alertBuilder=new AlertDialog.Builder(TableBikeActivity.this);
alertBuilder.setTitle("Options").setCancelable(true);
alertBuilder.setMessage("Delete Record");
alertBuilder.setNeutralButton("Delete Selected Item", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
TextView textSrNo1 = (TextView) view.findViewById(R.id.textView29);
srNum=textSrNo1.getText().toString();
showDialogDelete();
}
});
AlertDialog alert=alertBuilder.create();
alert.show();
return true;
}
});
}
private void showDialogDelete() {
final AlertDialog.Builder alertBuilder = new AlertDialog.Builder(this);
LayoutInflater inflater = this.getLayoutInflater();
View dialogView = inflater.inflate(R.layout.delete_dialog, null);
alertBuilder.setView(dialogView);
final AlertDialog alertDialog = alertBuilder.create();
alertDialog.getWindow().setBackgroundDrawable(new ColorDrawable(android.R.color.transparent));
alertDialog.setCancelable(true);
alertDialog.show();
final Button btnNo=(Button)alertDialog.findViewById(R.id.btnNo);
btnNo.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
alertDialog.dismiss();
}
});
Button btnYes=(Button)alertDialog.findViewById(R.id.btnYes);
btnYes.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
try{
databaseHelper=new DatabaseHelper(TableBikeActivity.this);
SQLiteDatabase database=databaseHelper.getWritableDatabase();
long delete=database.delete("bikeTable","uSerialNo='"+srNum+"'",null);
if (delete!=-1){
Toast.makeText(TableBikeActivity.this,"Deleted Successfully",Toast.LENGTH_SHORT).show();
}else {
Toast.makeText(TableBikeActivity.this,"Deletion Effed",Toast.LENGTH_SHORT).show();
}
alertDialog.dismiss();
bikeList.setAdapter(adapter);
adapter.notifyDataSetChanged();
}catch (SQLiteException e){
e.printStackTrace();
Toast.makeText(TableBikeActivity.this,"Deletion Failed",Toast.LENGTH_SHORT).show();
}
}
});
}
我的CursorAdapter
课程是
public class DisplayAdapter extends CursorAdapter {
DatabaseHelper databaseHelper;
@SuppressWarnings("deprecation")
public DisplayAdapter(Context context,Cursor c){
super(context,c);
}
@Override
public View newView(Context context, Cursor cursor, ViewGroup parent) {
LayoutInflater inflater = LayoutInflater.from(parent.getContext());
View retView = inflater.inflate(R.layout.card_items, parent, false);
return retView;
}
@Override
public void bindView(final View view, final Context context, final Cursor cursor) {
TextView tvUserName=(TextView)view.findViewById(R.id.textView27);
tvUserName.setText(cursor.getString(2));
TextView tvMobile=(TextView)view.findViewById(R.id.textView28);
tvMobile.setText(cursor.getString(3));
final TextView tvSerial=(TextView)view.findViewById(R.id.textView29);
tvSerial.setText(cursor.getString(5));
}
}
答案 0 :(得分:0)
添加adapter.getCursor().requery();
解决了这个问题。