2016-07-24 7 views
1

私はテキストボックスと画像でカスタムリストを作成しました。イメージは、データベースsqliteの行を削除する必要があります。私のフラグメント活性のカーソルのリスト内の項目を削除する

私はsqlitedatabaseのクエリメソッドを使用しています。

cursor = mSqLiteDatabase.rawQuery("SELECT liked_id as _id, liked_presentation_id FROM liked", null); 
LikedListCursorAdapter likedListCursorAdapter = new LikedListCursorAdapter(getActivity(), cursor); 
lvItems.setAdapter(likedListCursorAdapter); 

/////////////私cursoradapter

public class LikedListCursorAdapter extends CursorAdapter { 

SQLiteDatabase mSqLiteDatabase; 
int idSpeaker,idPresentation; 
TextView textViewName, textViewCompany, textViewTitle, textViewDate, textViewAboutReport; 
LinearLayout linearLayout; 

    public static ImageView imageViewStatus; 
    private DatabaseHelper mDatabaseHelper; 

public LikedListCursorAdapter(Context context, Cursor cursor) { 
    super(context, cursor); 

} 


@Override 
public View newView(Context context, Cursor cursor, ViewGroup parent) { 
    return LayoutInflater.from(context).inflate(R.layout.liked_list, parent, false); 
} 

@Override 
public void bindView(View view, final Context context, final Cursor cursor) { 

    imageViewStatus = (ImageView) view.findViewById(R.id.imageViewStatus); 

    textViewTitle = (TextView) view.findViewById(R.id.textViewTitle); 
    textViewDate = (TextView) view.findViewById(R.id.textViewTime); 

    idSpeaker = cursor.getInt(cursor.getColumnIndex("_id")); 

///////////////delete item 

    imageViewStatus.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      Log.w("id",String.valueOf(idSpeaker)); 
      mDatabaseHelper = new DatabaseHelper(context); 

      mSqLiteDatabase = mDatabaseHelper.getWritableDatabase(); 

      mSqLiteDatabase.delete(mDatabaseHelper.TABLE_LIKED, 
        "liked_id = ?", 
        new String[] {String.valueOf(idSpeaker)}); 
      cursor.requery(); 


      notifyDataSetChanged(); 
     } 
    }); 

しかし、常にリストビューの最後の行を削除します。 (カーソルの位置が最後です)。

私は私がクリックしたときに、リストビューから現在位置を取得する方法がわかりません。 、あなたは常にあなたのデータの最後のIDを与え、あなたのbindView、であなたのidSpeakerを初期化している私に

答えて

0

ソリューションにバインドビューからあなたの1行

idSpeaker = cursor.getInt(cursor.getColumnIndex("_id"));

をシフトする必要があります:私はsetOnClickListener前に、カーソルの位置を見つけるためのコードを追加し

final int position = cursor.getPosition(); 



imageViewStatus.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       int idSpeaker; 

       mDatabaseHelper = new DatabaseHelper(context); 
       mSqLiteDatabase = mDatabaseHelper.getWritableDatabase(); 


/////move to this position 

       cursor.moveToPosition(position); 
       idSpeaker = cursor.getInt(cursor.getColumnIndex("liked_id")); 

       Log.w("getPos",String.valueOf(cursor.getPosition())); 
       mSqLiteDatabase.delete(mDatabaseHelper.TABLE_LIKED, 
         "liked_id = ?", 
         new String[] {String.valueOf(idSpeaker)}); 
       cursor.requery(); 


       notifyDataSetChanged(); 
      } 
     }); 
0

を助けてください。したがって、テーブルから削除するときに、最後のアイテムは削除されます。

あなただけ

imageViewStatus.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      cursor.moveToPosition(position); 
      idSpeaker = cursor.getInt(cursor.getColumnIndex("_id")); 

      Log.w("id",String.valueOf(idSpeaker)); 
      mDatabaseHelper = new DatabaseHelper(context); 

      mSqLiteDatabase = mDatabaseHelper.getWritableDatabase(); 

      mSqLiteDatabase.delete(mDatabaseHelper.TABLE_LIKED, 
        "liked_id = ?", 
        new String[] {String.valueOf(idSpeaker)}); 
      cursor.requery(); 


      notifyDataSetChanged(); 
     } 
    }); 
+0

それは働いていません。 cursor.getposition()=最後のインデックスは、リストビュー に私の知る限り理解し、私は、リストビューにインデックス行を見つけて、cursor.movetoposition(インデックス)に移す必要があります。 はその後idSpeaker前にこの cursor.moveToPosition(位置)を追加 –

+0

動作します –

関連する問題