MultiChoiceModeListener.onItemCheckedStateChanged() nur ausgeführt wird, wenn das Element aktiviert ist

Ich bin ein problem.
In meiner Haupttätigkeit, die sich ListActivity und Implementiert MultiChoiceModeListener, ich habe die überschrieben Methode onItemCheckedStateChanged().

Das problem ist, dass diese Methode nur ausgeführt, wenn der neue Aktivierungszustand des itrem AKTIVIERT ist. Wenn ich es deaktivieren, wird es nicht ausgeführt.

Ich check das Element programmgesteuert aus meiner DataListAdapter. Mein Artikel-layout enthält eine CheckBox, dass, wenn es überprüft, ich benutze die Steuerung ist onCheckedChanged() um die Liste zu ändern Element-check-Zustand.

Irgendwelche Hinweise?

Hier ist mein code (die relevanten code only):

Haupttätigkeit:

public class MainActivity extends ListActivity implements MultiChoiceModeListener
{
    @Override
    protected void onCreate (Bundle bundle)
    {
        super.onCreate (bundle);
        //Set our view from the "main" layout resource
        setContentView (R.layout.main);

        this.getListView().setChoiceMode(AbsListView.CHOICE_MODE_MULTIPLE_MODAL);
        this.getListView().setMultiChoiceModeListener(this);

        _dataAdapter = new ServerListAdapter (this);
        this.getListView(). setAdapter(_dataAdapter);
        registerForContextMenu (this.getListView());
    }

    public void onItemCheckedStateChanged(ActionMode mode, int position, long id, boolean isChecked) 
    {
        //Some code that only is executed when the setItemChecked is true on the DataListAdapter.        
    }
}

Liste-Adapter

public class ServerListAdapter extends BaseAdapter 
{
    @Override
    public View getView (final int position, View convertView, ViewGroup parent)
    {
        View view = (convertView == null ?
                _context.getLayoutInflater().inflate(
                R.layout.server_list_item_view,
                parent, 
                false) : convertView);

        final ListView listView = (ListView)parent;
        ((CheckBox)view.findViewById(R.id.chkItemServerSelected)).setOnCheckedChangeListener(new OnCheckedChangeListener() 
        {
            @Override
            public void onCheckedChanged(CompoundButton pCompound, boolean arg1) 
            {
                listView.setItemChecked(position, pCompound.isChecked());
            }       
        });

        return view;
    }
}
  • Sind Sie in der Lage zu sagen, was dieser code wird nur ausgeführt, wenn es wahr ist? Oder zumindest sicherzustellen, dass die Methode nicht aufgerufen, wenn das falsch?
  • es gibt eigentlich keine Notwendigkeit. Nur durch Debuggen kann ich sehen, dass die Methode ist nur nicht aufgerufen, wenn setItemChecked auf false gesetzt ist. Es ist nicht der code innerhalb der onItemCheckedStateChanged, dass ich Probleme habe, das ist die eigentliche Methode, die aufgerufen ist nicht beim falschen.
  • Sie waren in der Lage das problem zu lösen? Scheint, wie ich auch bekommen - onItemCheckedStateChanged nicht genannt auf deaktivieren
InformationsquelleAutor Juanu Haedo | 2013-03-23
Schreibe einen Kommentar