В режиме действия несколько элементов выбора в виде сетки

Как я могу выбрать несколько элементов в виде сетки, когда я нахожусь в режиме действия?

Я реализовал этот способ, но не функцию:

Макет фрагмента:

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:gravity="center_horizontal|center_vertical"
    android:orientation="vertical"
    android:theme="@style/AppTheme">

    <GridView
        android:id="@+id/gridview1"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_margin="0dp"


        android:choiceMode="multipleChoiceModal"
        android:listSelector="@drawable/selected"
        android:drawSelectorOnTop="true"

        android:gravity="fill"
        android:horizontalSpacing="2dp"
        android:numColumns="3"
        android:paddingTop="5dp"
        android:stackFromBottom="true"
        android:stretchMode="columnWidth"
        android:verticalSpacing="2dp"
        android:visibility="visible"/>
</LinearLayout>

Селектор списка состояний (selected.xml)

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- un click-->
    <item android:drawable="@color/pressed" android:state_pressed="true"/>
    <item android:drawable="@color/selected" android:state_selected="true"/>
    <!--checkatto-->
    <item android:drawable="@color/checkable" android:state_checkable="true"/>
    <!-- while selected in actionmode -->
    <item android:state_activated="true" android:drawable="@color/activate" />
    <item android:drawable="@color/standard"/>
</selector>

Адаптер (создайте динамическое представление, например, настраиваемое изображение ()

public View getView(int position, View convertView, ViewGroup parent)
{
        CheckableImageView checkableImageView; 
        if (convertView == null) 
        {
            checkableImageView = new CheckableImageView(mContext);                
           checkableImageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
            checkableImageView.setMinimumHeight(300);
        } else {
            checkableImageView = (CheckableImageView) convertView;
        }

        Bitmap bitmap = cachePhoto.get((long) position);
        if (bitmap != null) {
            checkableImageView.setImageBitmap(cachePhoto.get((long) 
            position));

        } else {


            try {                   
//task async            
CaricaImmagine(listMedia.get(position),checkableImageView,position);

                } catch (Exception e)
                {}
            }

Подкласс для проверяемого состояния просмотра изображений

public class CheckableImageView extends android.support.v7.widget.AppCompatImageView implements Checkable {
    private boolean mChecked;

    private static final int[] CHECKED_STATE_SET = { android.R.attr.state_checked };

    public CheckableImageView(final Context context) {
        super(context);
    }

    @Override
    public int[] onCreateDrawableState(final int extraSpace) {
        final int[] drawableState = super.onCreateDrawableState(extraSpace + 1);
        if (isChecked())
            mergeDrawableStates(drawableState, CHECKED_STATE_SET);
        return drawableState;
    }

    @Override
    public void toggle() {
        setChecked(!mChecked);
    }

    @Override
    public boolean isChecked() {
        return mChecked;
    }

    @Override
    public void setChecked(final boolean checked) {
        if (mChecked == checked)
            return;
        mChecked = checked;
        refreshDrawableState();
    }
}

Слушатель для режима действий (CAB)

@Override
    public boolean onCreateActionMode(ActionMode actionMode, Menu menu) {

        actionMode.getMenuInflater().inflate(R.menu.contexmenumultiselection, menu);

        return true;
    }

    @Override
    public boolean onPrepareActionMode(ActionMode actionMode, Menu menu) {

        return false;
    }

    @Override  
    public boolean onActionItemClicked(ActionMode actionMode, MenuItem menuItem) {

        return false;
    }

    @Override
    public void onDestroyActionMode(ActionMode actionMode) {

    }

Я могу полностью в Action Mode, но множественный выбор не работает (пользовательский просмотр изображения не изменяется bgcolor), почему? где я не прав?

0 ответов

Другие вопросы по тегам