1

次のコードの特定の概念を理解できません。

1) なぜ.arg0.getPathSegments().get(1) を使用しているのか?

2) get(1) の値は?

3) (!TextUtils.isEmpty(arg1) ? " AND (" + arg1 + ')' : ""), arg2); の機能は何ですか?

public int delete(Uri arg0, String arg1, String[] arg2) {
  int count=0;
  switch (uriMatcher.match(arg0)){
     case BOOKS:
        count = booksDB.delete(
           DATABASE_TABLE,
           arg1, 
           arg2);
        break;
     case BOOK_ID:
        String id = arg0.getPathSegments().get(1);
        count = booksDB.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;      
4

1 に答える 1

0

1) なぜ.arg0.getPathSegments().get(1) を使用しているのか?

uri content://[Authority]/foo/bar getPathsegments でクエリを実行すると、foo と bar (権限ではない) のリストが返されるとします。

2) get(1) の値は?

したがって、上記の場合、 get(1) はリストの2番目のアイテム、つまりバーを提供します

3) (!TextUtils.isEmpty(arg1) ? " AND (" + arg1 + ')' : ""), arg2); の機能は何ですか?

削除関数のシグネチャは

   public int delete(Uri url, String where, String[] whereArgs)

したがって、where文字列が null でない場合、条件はデータベースの削除操作に追加されます。

于 2012-12-19T12:57:14.480 に答える