简体   繁体   English

Android MultiChoiceModeListener对2.3的支持

[英]Android MultiChoiceModeListener support for 2.3

To support action bar im using Android Support Library package V4 and V7.Im using MultiChoiceModeListener in my applicaiton. 为了在我的应用程序中使用MultiChoiceModeListener来使用Android支持库程序包V4和V7.Im支持操作栏即时消息。 How do i can use MultiChoiceModeListener for 2.3 devices.. 如何将MultiChoiceModeListener用于2.3设备。

Working Example V7 V7工作示例

import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.support.v7.view.ActionMode;
import android.util.SparseBooleanArray;

import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView; 
import android.widget.AdapterView.OnItemClickListener;

public class MainActivity extends ActionBarActivity {

    static final String[] COUNTRIES = new String[] {
        "Afghanistan", "Albania", "Algeria", "American Samoa", "Andorra",
        "Angola", "Anguilla", "Canada", "France", "Spain" };

    private ListView mListView;
    private ActionMode mMode;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);




        mMode = null;
        mListView = (ListView) findViewById(R.id.listView1);
        mListView.setAdapter(new ArrayAdapter(this,
                android.R.layout.simple_list_item_multiple_choice, COUNTRIES));
        mListView.setItemsCanFocus(false);
        mListView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
        mListView.setOnItemClickListener(new OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
                    long arg3) {
                // TODO Auto-generated method stub
                 SparseBooleanArray checked = mListView.getCheckedItemPositions();
                    boolean hasCheckedElement = false;
                    for (int i = 0 ; i < checked.size() && ! hasCheckedElement ; i++) {
                        hasCheckedElement = checked.valueAt(i);
                    }

                    if (hasCheckedElement) {
                        if (mMode == null) {
                            mMode =  startSupportActionMode(new ModeCallback());
                        }
                    } else {
                        if (mMode != null) {
                            mMode.finish();
                        }
                    }


            }
        });

    }





    private final class ModeCallback implements ActionMode.Callback {

        @Override
        public boolean onCreateActionMode(ActionMode mode, Menu menu) {
            // Create the menu from the xml file
            MenuInflater inflater = getMenuInflater();
            inflater.inflate(R.menu.activity_main, menu);
            return true;
        }

        @Override
        public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
            // Here, you can checked selected items to adapt available actions
            return false;
        }

        @Override
        public void onDestroyActionMode(ActionMode mode) {
            // Destroying action mode, let's unselect all items
            for (int i = 0; i < mListView.getAdapter().getCount(); i++)
                mListView.setItemChecked(i, false);

            if (mode == mMode) {
                mMode = null;
            }
        }

        @Override
        public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
            long[] selected = mListView.getCheckedItemIds();
            if (selected.length > 0) {
                for (long id: selected) {
                    // Do something with the selected item
                }
            }
            mode.finish();
            return true;
        }
    };
}

I'm using this library successfully which has min SDK 7. 我正在成功使用具有最小SDK 7的该库。

https://github.com/akalipetis/action-mode-list-fragment/ https://github.com/akalipetis/action-mode-list-fragment/

ListFragment implementation, for handling ActionMode showup and management using the AppCompat library and being backwards compatible to 2.1. ListFragment实现,用于使用AppCompat库处理ActionMode的显示和管理,并向后兼容2.1。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM