Listview Element löschen und hinzufügen per Checkbox

  • 4 Antworten
  • Neuester Beitrag
Diskutiere Listview Element löschen und hinzufügen per Checkbox im Android App Entwicklung im Bereich Betriebssysteme & Apps.
M

madgnoll

Neues Mitglied
Hallo zusammen,

ich möchte gerne über ein Checkboxfeld ein Element in einer Viewlist erscheinen lassen, wenn die Box gecheckt ist, falls nicht soll das Element nicht erscheinen bzw. auch entfernt werden.

Das Hinzufügen ansich funktioniert gut (ohne den Code für das Entfernen)
Wenn ich den Code für das Entfernen des Elements integriere, passiert leider nichts mehr (also kein Element wird mehr hinzugefügt, allerdings erscheint auch keine Fehlermeldung).

Weiß jemand weiter?

Vielen Dank und beste Grüße,

Madgnoll

Code:
package com.example.verviewlist;

import java.util.ArrayList;

import android.app.ListActivity;
import android.os.Bundle;
import android.util.SparseBooleanArray;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
public class MainActivity extends ListActivity {

    ArrayList list = new ArrayList();
    ArrayAdapter adapter;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);       
        CheckBox checkadd = (CheckBox) findViewById (R.id.checkBox1);
        adapter = new ArrayAdapter(this, android.R.layout.simple_list_item_multiple_choice, list);
        OnClickListener listenerst = new OnClickListener() {
            @Override
            public void onClick(View v) {    
                CheckBox checkadd = (CheckBox) findViewById (R.id.checkBox1);
                if (checkadd.isChecked()){              
                list.add("Test 1");
                adapter.notifyDataSetChanged();               
            }}
        };

        OnClickListener listenerloesch = new OnClickListener() {
           @Override
            public void onClick(View v) {
               CheckBox checkadd = (CheckBox) findViewById (R.id.checkBox1);
      if (checkadd.isChecked()==false){ 
      list.remove("Test 1");       
      adapter.notifyDataSetChanged();               
           }}
       };
    
        checkadd.setOnClickListener(listenerst);
        checkadd.setOnClickListener(listenerloesch);
        setListAdapter(adapter);
    }
}

Code:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >



    <ListView
        android:id="@android:id/list"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:choiceMode="multipleChoice" >
    </ListView>

    <CheckBox
        android:id="@+id/checkBox1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_marginLeft="24dp"
        android:text="CheckBox" />

</RelativeLayout>
 
Kardroid

Kardroid

Stammgast
Hallo,

für mich sieht es auf dem ersten Blick ganz klar aus.

Code:
checkadd.setOnClickListener(listenerst);
        checkadd.setOnClickListener(listenerloesch);
Du hast zwei Listener bei einem fügst du was hinzu, beim zweiten löscht du es wieder direkt.

Mach mal zwei Logs bei den jeweiligen Listenern, dann müsstest du das sehen.

Aber die Lösung ist, dass du nur einen Listener brauchst:

Code:
OnClickListener listenerst = new OnClickListener() {
@Override
public void onClick(View v) {
CheckBox checkadd = (CheckBox) findViewById (R.id.checkBox1);
if (checkadd.isChecked()){
list.add("Test 1");
adapter.notifyDataSetChanged();
}
else{

list.remove("Test 1");
adapter.notifyDataSetChanged();

}}
};
 
M

madgnoll

Neues Mitglied
Hallo,

vielen herzlichen Dank für deine Antwort!

Ich habe es direkt ausprobiert, leider bekomme ich eine timeout gemeldet.Habe überlegt, ob er jetzt pausenlos Elemente in die View lädt oder entfernt - aber des dürfte eigentlich auch nicht der Fall sein.


Code:
package com.example.verviewlist;

import java.util.ArrayList;

import android.app.ListActivity;
import android.os.Bundle;
import android.util.SparseBooleanArray;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
public class MainActivity extends ListActivity {
    ArrayList list = new ArrayList();
    ArrayAdapter adapter;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);       
        CheckBox checkadd = (CheckBox) findViewById (R.id.checkBox1);
        adapter = new ArrayAdapter(this, android.R.layout.simple_list_item_multiple_choice, list);
   
            OnClickListener listenerst = new OnClickListener() {
                @Override
                public void onClick(View v) {
                CheckBox checkadd = (CheckBox) findViewById (R.id.checkBox1);
                if (checkadd.isChecked()){
                list.add("Test 1");
                adapter.notifyDataSetChanged();
                }
                else{

                list.remove("Test 1");
                adapter.notifyDataSetChanged();

                }}
            };        
                checkadd.setOnClickListener(listenerst);
                setListAdapter(adapter);
           
    }}
 
Kardroid

Kardroid

Stammgast
Hi,

ich habe deinen Code jetzt vom ersten Post in ein neues Projekt hinzugefügt, und den Code vom letzten Post auch.

Bei mir funktioniert es. (Siehe Screenshots) Könntest du deine Fehlermeldung vielleicht besser beschreiben?
device-2015-06-21-094036.png device-2015-06-21-093959.png
 
M

madgnoll

Neues Mitglied
Hallo,

vielen lieben Dank, jetzt funktioniert es!
Gestern brachte er noch eine Fehlermeldung, heute geht es. Vielleicht war's gestern einfach zu spät ;-)

Beste Grüße,
Madgnoll
 
Ähnliche Themen - Listview Element löschen und hinzufügen per Checkbox Antworten Datum
9