ViewList MultiSelection을 통해 데이터베이스에서 삭제

크리스티안 디아즈 프라도

다음 코드가 있습니다.

public class ListAnotaciones extends ListActivity {

AnotacionesOpenHelper openHelper = AnotacionesOpenHelper.getAnotaciones(this);
SQLiteDatabase bd;
Cursor cursor;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    bd = openHelper.getReadableDatabase();
    cursor = bd.rawQuery("select * from anotaciones", null);
    final ArrayList<Cursor> lista = new ArrayList<Cursor>();

    try {
        String [] from = {"titulo", "fecha"};
        int [] to = {R.id.anotacionesTexto, R.id.anotacionesFecha};
        final SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, R.layout.anotacion, cursor, from, to, CursorAdapter.FLAG_REGISTER_CONTENT_OBSERVER);
        setListAdapter(adapter);

        getListView().setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL);
        getListView().setMultiChoiceModeListener(
                new AbsListView.MultiChoiceModeListener() {
                    @Override
                    public void onItemCheckedStateChanged(ActionMode mode, int position, long id, boolean checked) {
                        int seleccion = getListView().getCheckedItemCount();
                        boolean borrado = false;

                        if(checked){
                            lista.add((Cursor)getListView().getItemAtPosition(position));
                            lista.get(0).moveToFirst();
                            Toast.makeText(getApplicationContext(),lista.get(0).getString(0),Toast.LENGTH_SHORT).show();
                        }else{
                            /*
                            SQLiteCursor seleccionado = (SQLiteCursor)getListView().getItemAtPosition(position);
                            for(int i = 0;i < lista.size();i++){
                                if(lista.get(i).getString(0).equals(seleccionado.getString(0))){
                                    lista.remove(i);
                                    borrado = true;
                                    break;
                                }
                            }
                            */
                        }
                        mode.setTitle(seleccion + " Notas Seleccionadas");
                    }

                    @Override
                    public boolean onCreateActionMode(ActionMode mode, Menu menu) {
                        mode.getMenuInflater().inflate(R.menu.ctx_borrar,menu); //Inflamos el menú creado como XML en Menu
                        return true;
                    }

                    @Override
                    public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
                        return false;
                    }

                    @Override
                    public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
                        switch (item.getItemId()){
                            case R.id.CtxLblBorrar:
                                /*
                                for(int i = 0 ; i < lista.size();i++){
                                    Toast.makeText(getApplicationContext(),lista.get(i).getString(0),Toast.LENGTH_SHORT).show();
                                    bd.delete("anotaciones","_id = " + lista.get(i).getString(0),null);
                                }
                                */
                                while(lista.get(0).moveToNext()){
                                    bd.delete("anotaciones","_id = " + lista.get(0).getString(0),null);
                                }
                                adapter.notifyDataSetChanged();
                                return true;
                            default:
                                return false;
                        }

                    }

                    @Override
                    public void onDestroyActionMode(ActionMode mode) {

                    }
                }
        );
    } catch (IllegalArgumentException e) {
        e.printStackTrace();
    }
}

/*@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.anotaciones, menu);

    return true;
}*/

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case R.id.CtxLblBorrar:
            Toast.makeText(getApplicationContext(),"Se ha pulsado Borrar - " + getListView().getCheckedItemCount(),Toast.LENGTH_SHORT).show();
            return true;
        default:
            Toast.makeText(getApplicationContext(),"OPCION NO PROGRAMADA",Toast.LENGTH_SHORT).show();
            return super.onOptionsItemSelected(item);
    }
}

@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo){
    super.onCreateContextMenu(menu, v, menuInfo);
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.ctx_borrar, menu);
}
}

데이터베이스에서 삭제 한 다음 ListView를 업데이트하려고합니다. 여기에서 몇 가지 솔루션을 보았지만 솔루션을 내 코드에 적용 할 수 없습니다 (나는 안드로이드를 처음 접했습니다). 보다 구체적으로, 삭제해야하는 것보다 옵션을 "저장"하는 방법을 모릅니다. 더 많은 코드가 필요하면 그렇게 말 해주세요.

크리스티안 디아즈 프라도

SOLVED 정말 미안 해요, 저는 약간 눈이 멀었습니다. 제 질문에 대한 코드입니다.

public class ListAnotaciones extends ListActivity {

AnotacionesOpenHelper openHelper = AnotacionesOpenHelper.getAnotaciones(this);
SQLiteDatabase bd;
Cursor cursor;
Context contexto = this;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    bd = openHelper.getWritableDatabase();
    cursor = bd.rawQuery("select * from anotaciones", null);
    final ArrayList<Long> borrar = new ArrayList<Long>();
    try {
        String [] from = {"titulo", "fecha", "texto"};
        int [] to = {R.id.anotacionesTitulo, R.id.anotacionesFecha,R.id.anotacionesTexto};
        SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, R.layout.anotacion, cursor, from, to, CursorAdapter.FLAG_REGISTER_CONTENT_OBSERVER);
        setListAdapter(adapter);
        getListView().setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL);
        getListView().setMultiChoiceModeListener(
                new AbsListView.MultiChoiceModeListener(){
                    @Override
                    public void onItemCheckedStateChanged(ActionMode mode, int position, long id, boolean checked) {
                        Toast.makeText(getApplicationContext(),Long.toString(id),Toast.LENGTH_SHORT).show();
                        if(checked){
                            borrar.add(id);
                        }else{
                            for(int i = 0; i < borrar.size();i++){
                                if(borrar.get(i) == id){
                                    borrar.remove(i);
                                }
                            }
                            Toast.makeText(getApplicationContext(),"Deseleccionado",Toast.LENGTH_SHORT).show();
                        }
                    }

                    @Override
                    public boolean onCreateActionMode(ActionMode mode, Menu menu) {
                        mode.getMenuInflater().inflate(R.menu.ctx_borrar,menu); //Inflamos el menú creado como XML en Menu
                        return true;
                    }

                    @Override
                    public void onDestroyActionMode(ActionMode mode) {

                    }

                    @Override
                    public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
                        switch (item.getItemId()){
                            case R.id.CtxLblBorrar:
                               Toast.makeText(getApplicationContext(),"Se ha pulsado Borrar",Toast.LENGTH_SHORT).show();
                                for(int i = 0 ; i < borrar.size();i++){
                                    bd.delete("anotaciones","_id=" + borrar.get(i),null);
                                }
                               return true;
                            default:
                                return false;
                        }
                    }

                    @Override
                    public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
                        return true;
                    }
                }
        );

    } catch (IllegalArgumentException e) {
        e.printStackTrace();
    }
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.anotaciones, menu);
    return true;
}
}

어쨌든 해결해 주셔서 감사합니다

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Ajax를 통해 데이터베이스에서 행을 삭제하는 방법

분류에서Dev

버튼 클릭을 통해 C #으로 MS Access 데이터베이스에서 데이터 삭제

분류에서Dev

PHP 버튼을 통해 데이터베이스의 레코드 삭제

분류에서Dev

AJAX 호출을 통해 데이터 테이블에서 데이터 삭제

분류에서Dev

Python을 사용하여 HTML 형식을 통해 SQL 데이터베이스에 저장된 작업 삭제

분류에서Dev

개별 된 div MySQL 데이터베이스에서 데이터를 통해 반복하고 그것을 제공

분류에서Dev

데이터베이스를 쿼리 할 때 getJSON을 통해 얻은 목록에서 항목을 삭제합니다.

분류에서Dev

데이터베이스에서 항목을 삭제하고 데이터 그리드를 업데이트해도이 개체가 계속 표시됩니다.

분류에서Dev

ListView를 통해 행 양식 SQLite 데이터베이스 삭제

분류에서Dev

Grails에서 터미널을 통해 서비스 삭제

분류에서Dev

Python을 통해 csv에서 postgreSQL 데이터베이스로 데이터 삽입

분류에서Dev

앱을 제거한 후 mysql 데이터베이스에서 테이블 삭제

분류에서Dev

터미널을 통해 내 데이터베이스 SQL 내보내기 문제

분류에서Dev

페이팔을 통해 결제 완료시 데이터베이스에 양식 제출

분류에서Dev

삭제 버튼을 클릭하면 데이터베이스 항목을 삭제합니다. 데이터는 데이터베이스의 루프를 통해 표시됩니다.

분류에서Dev

데이터베이스에서 행을 삭제할 때 입력 제거

분류에서Dev

체크 박스를 사용하여 데이터베이스에서 여러 행을 삭제하려면 어떻게해야합니까?

분류에서Dev

데이터베이스에서 행 / 항목을 삭제하기 위해 확인란 양식을 사용하는 Symfony 2.3

분류에서Dev

체크 박스를 통해 데이터베이스 항목 삭제

분류에서Dev

SQLite 데이터베이스에서 행을 삭제할 수 없습니다.

분류에서Dev

C #을 사용하여 데이터베이스에서 행 삭제

분류에서Dev

JTable 및 데이터베이스에서 행을 삭제하는 SQLException

분류에서Dev

JTable 및 데이터베이스에서 행을 삭제하는 SQLException

분류에서Dev

데이터베이스에서 행을 삭제할 수 없습니다.

분류에서Dev

데이터베이스에서 항목을 삭제하는 방법

분류에서Dev

데이터베이스에서 행을 삭제할 수 없습니다.

분류에서Dev

SSH 터널을 통해 데이터베이스에 연결

분류에서Dev

JavaScript를 통해 JSON 데이터 삭제

분류에서Dev

서블릿을 통해 데이터베이스에서 정보 얻기

Related 관련 기사

  1. 1

    Ajax를 통해 데이터베이스에서 행을 삭제하는 방법

  2. 2

    버튼 클릭을 통해 C #으로 MS Access 데이터베이스에서 데이터 삭제

  3. 3

    PHP 버튼을 통해 데이터베이스의 레코드 삭제

  4. 4

    AJAX 호출을 통해 데이터 테이블에서 데이터 삭제

  5. 5

    Python을 사용하여 HTML 형식을 통해 SQL 데이터베이스에 저장된 작업 삭제

  6. 6

    개별 된 div MySQL 데이터베이스에서 데이터를 통해 반복하고 그것을 제공

  7. 7

    데이터베이스를 쿼리 할 때 getJSON을 통해 얻은 목록에서 항목을 삭제합니다.

  8. 8

    데이터베이스에서 항목을 삭제하고 데이터 그리드를 업데이트해도이 개체가 계속 표시됩니다.

  9. 9

    ListView를 통해 행 양식 SQLite 데이터베이스 삭제

  10. 10

    Grails에서 터미널을 통해 서비스 삭제

  11. 11

    Python을 통해 csv에서 postgreSQL 데이터베이스로 데이터 삽입

  12. 12

    앱을 제거한 후 mysql 데이터베이스에서 테이블 삭제

  13. 13

    터미널을 통해 내 데이터베이스 SQL 내보내기 문제

  14. 14

    페이팔을 통해 결제 완료시 데이터베이스에 양식 제출

  15. 15

    삭제 버튼을 클릭하면 데이터베이스 항목을 삭제합니다. 데이터는 데이터베이스의 루프를 통해 표시됩니다.

  16. 16

    데이터베이스에서 행을 삭제할 때 입력 제거

  17. 17

    체크 박스를 사용하여 데이터베이스에서 여러 행을 삭제하려면 어떻게해야합니까?

  18. 18

    데이터베이스에서 행 / 항목을 삭제하기 위해 확인란 양식을 사용하는 Symfony 2.3

  19. 19

    체크 박스를 통해 데이터베이스 항목 삭제

  20. 20

    SQLite 데이터베이스에서 행을 삭제할 수 없습니다.

  21. 21

    C #을 사용하여 데이터베이스에서 행 삭제

  22. 22

    JTable 및 데이터베이스에서 행을 삭제하는 SQLException

  23. 23

    JTable 및 데이터베이스에서 행을 삭제하는 SQLException

  24. 24

    데이터베이스에서 행을 삭제할 수 없습니다.

  25. 25

    데이터베이스에서 항목을 삭제하는 방법

  26. 26

    데이터베이스에서 행을 삭제할 수 없습니다.

  27. 27

    SSH 터널을 통해 데이터베이스에 연결

  28. 28

    JavaScript를 통해 JSON 데이터 삭제

  29. 29

    서블릿을 통해 데이터베이스에서 정보 얻기

뜨겁다태그

보관