我想从点击按钮删除行,当我删除号码“1231312”时,行已删除但如果删除号码“08982312”行不删除。每个数字都以0开头,行不能删除不强制关闭但不能删除。 这里是我的清单代码:
BlackListProvider.java
公共类BlackListProvider扩展ContentProvider { public static final String PROVIDER_NAME =“skripsi.ebranda.provider.blacklist”;
public static final Uri CONTENT_URI = Uri.parse("content://"
+ PROVIDER_NAME + "/blacklist");
public static final String _ID = "_id";
public static final String Number = "number";
static final int BLACKLIST = 1;
static final int BLACKLIST_ID = 2;
static final UriMatcher uriMatcher;
static {
uriMatcher = new UriMatcher(UriMatcher.NO_MATCH);
uriMatcher.addURI(PROVIDER_NAME, "blacklist", BLACKLIST);
uriMatcher.addURI(PROVIDER_NAME, "blacklist/#", BLACKLIST_ID);
}
// ---for database use---
static SQLiteDatabase blacklistDB;
private static final String DATABASE_NAME = "BlackList";
static final String DATABASE_TABLE = "blacklist";
private static final int DATABASE_VERSION = 1;
private static final String DATABASE_CREATE = "create table "
+ DATABASE_TABLE + " (_id integer primary key autoincrement, "
+ " number text not null);";
public static class DatabaseHelper extends SQLiteOpenHelper {
DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(DATABASE_CREATE);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
Log.w("Content provider database",
"Upgrading database from version " + oldVersion + " to "
+ newVersion + ", which will destroy all old data");
db.execSQL("DROP TABLE IF EXISTS titles");
onCreate(db);
}
}
@Override
public String getType(Uri uri) {
switch (uriMatcher.match(uri)) {
// ---get all books---
case BLACKLIST:
return "vnd.android.cursor.dir/vnd.com.blacklist ";
// ---get a particular book---
case BLACKLIST_ID:
return "vnd.android.cursor.item/vnd.com.blacklist ";
default:
throw new IllegalArgumentException("Unsupported URI: " + uri);
}
}
@Override
public boolean onCreate() {
Context context = getContext();
DatabaseHelper dbHelper = new DatabaseHelper(context);
blacklistDB = dbHelper.getWritableDatabase();
return (blacklistDB == null) ? false : true;
}
@Override
public Cursor query(Uri uri, String[] projection, String selection,
String[] selectionArgs, String sortOrder) {
SQLiteQueryBuilder sqlBuilder = new SQLiteQueryBuilder();
sqlBuilder.setTables(DATABASE_TABLE);
if (uriMatcher.match(uri) == BLACKLIST_ID)
// ---if getting a particular book---
sqlBuilder.appendWhere(_ID + " = " + uri.getPathSegments().get(1));
if (sortOrder == null || sortOrder == "")
sortOrder = _ID;
Cursor c = sqlBuilder.query(blacklistDB, projection, selection,
selectionArgs, null, null, sortOrder);
// ---register to watch a content URI for changes---
c.setNotificationUri(getContext().getContentResolver(), uri);
return c;
}
@Override
public Uri insert(Uri uri, ContentValues values) {
// ---add a new book---
long rowID = blacklistDB.insert(DATABASE_TABLE, "", values);
// ---if added successfully---
if (rowID > 0) {
Uri _uri = ContentUris.withAppendedId(CONTENT_URI, rowID);
getContext().getContentResolver().notifyChange(_uri, null);
return _uri;
}
throw new SQLException("Failed to insert row into " + uri);
}
@Override
public int delete(Uri arg0, String arg1, String[] arg2) {
// arg0 = uri
// arg1 = selection
// arg2 = selectionArgs
int count = 0;
switch (uriMatcher.match(arg0)) {
case BLACKLIST:
count = blacklistDB.delete(DATABASE_TABLE, arg1, arg2);
break;
case BLACKLIST_ID:
String id = arg0.getPathSegments().get(1);
count = blacklistDB.delete(DATABASE_TABLE, _ID + " = " + id
+ (!TextUtils.isEmpty(arg1) ? " AND (" + arg1 + ')' : ""),
arg2);
break;
default:
throw new IllegalArgumentException("Unknown URI " + arg0);
}
getContext().getContentResolver().notifyChange(arg0, null);
return count;
}
@Override
public int update(Uri uri, ContentValues values, String selection,
String[] selectionArgs) {
int count = 0;
switch (uriMatcher.match(uri)) {
case BLACKLIST:
count = blacklistDB.update(DATABASE_TABLE, values, selection,
selectionArgs);
break;
case BLACKLIST_ID:
count = blacklistDB.update(
DATABASE_TABLE,
values,
_ID
+ " = "
+ uri.getPathSegments().get(1)
+ (!TextUtils.isEmpty(selection) ? " AND ("
+ selection + ')' : ""), selectionArgs);
break;
default:
throw new IllegalArgumentException("Unknown URI " + uri);
}
getContext().getContentResolver().notifyChange(uri, null);
return count;
}
BlackList.java
公共类BlackList扩展了ListActivity {
private ArrayList<String> numberList;
private Cursor cursor = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
ListAdapter adapter = createBlackListAdapter();
setListAdapter(adapter);
ListView lv = getListView();
lv.setTextFilterEnabled(true);
lv.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// When clicked, show a toast with the textview text
// CharSequence content = ((TextView)view).getText();
TextView t1 = (TextView) view.findViewById(R.id.tulisan);
String address = t1.getText().toString();
popUp(address);
}
});
}
public void popUp(String address) {
Bundle bundle = new Bundle();
bundle.putString("address", address);
bundle.putString("deletebutton", "Delete");
bundle.putString("closebutton", "Close");
Intent newIntent = new Intent(this.getApplicationContext(),
ListNumberBlack.class);
newIntent.putExtras(bundle);
startActivityForResult(newIntent, 0);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// TODO Auto-generated method stub
new MenuInflater(this).inflate(R.menu.menu, menu);
return(super.onCreateOptionsMenu(menu));
}
public boolean onOptionsItemSelected(MenuItem item){
if (item.getItemId()==R.id.addnumbermenu){
startActivity(new Intent(BlackList.this,AddBlackList.class));
return (true);
}
return (super.onOptionsItemSelected(item));
}
protected ListAdapter createBlackListAdapter() {
try {
numberList = new ArrayList<String>();
cursor = getContentResolver().query(
BlackListProvider.CONTENT_URI,
null,
null,
null,
null);
if (cursor != null && cursor.moveToFirst()) {
do {
String number = cursor.getString(cursor
.getColumnIndex("number"));
numberList.add(number);
} while (cursor.moveToNext());
}
} catch (Exception e) {
Log.e("BACKGROUND_PROC", e.getMessage());
}
return new ArrayAdapter<String>(this,
R.layout.list_item,numberList);
}
}
ListNumberBlack
公共类ListNumberBlack扩展了Activity {
private String address;
protected static final String ID_EXTRA = "skripsi.ebranda.nomorespam._ID";
long id;
@Override
public void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.list_number);
Bundle bundle = this.getIntent().getExtras();
address = bundle.getString("address");
//id = bundle.getInt(ID_EXTRA);
//String X = String.valueOf(id);
final String s = String.valueOf(address);
Toast.makeText(ListNumberBlack.this,
s, Toast.LENGTH_SHORT)
.show();
// set text
TextView txtContent = (TextView) findViewById(R.id.ListNumber);
txtContent.setText(address);
// --set button
// cancel button
String name = txtContent.getText().toString();
Button cancelButton = (Button) findViewById(R.id.cancel_button);
cancelButton.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
finish();
}
});
Button deleteButton = (Button) findViewById(R.id.delete_button);
deleteButton.setOnClickListener(new OnClickListener(){
//@Override
public void onClick(View v) {
// hapus pesan
Dialog.showConfirmation(ListNumberBlack.this,
R.string.hapus2,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int which) {
BlackListProvider.blacklistDB.delete(BlackListProvider.DATABASE_TABLE, BlackListProvider.Number
+ "=" + s, null);
finish();
Toast.makeText(ListNumberBlack.this,
"Nomor Terhapus", Toast.LENGTH_SHORT)
.show();
}
});
}});
答案 0 :(得分:0)
我不确定答案,但我想了几个想法:
1-为什么你有final String s = String.valueOf(address);
?为什么不只是final String s = address;
?
2-尝试将单引号添加到String s
,如下所示:
BlackListProvider.blacklistDB.delete(BlackListProvider.DATABASE_TABLE,
BlackListProvider.Number + "='" + s +"'", null);
如果有任何帮助,请告诉我。