Chcę rysować selektor na długie naciśnięcie, jak pokazano na rysunku. Po długim naciśnięciu jednego elementu menu CAB zostanie uaktywnione. Ale wskaźnik wyboru listy wyłącza się po kliknięciu. Chcę, żeby selektory list były aktywne, dopóki menu CAB nie będzie aktywne, aby umożliwić wielokrotny wybór. Kolor powinien się przełączyć, jeśli dwukrotnie dotknę. Ten kod działa jak migotanie, gdy go klikam. Ktoś z kim zmierzył się w podobny sposób? Czy jest jakiś hack, aby przynieść tę funkcjonalność?Selektor listy przedmiotów w GridView dla wielu produktów nie działa w systemie Android.
GridView z wielokrotnego wyboru:
GridView setchoice w moim onCreate:
gridView.setChoiceMode(GridView.CHOICE_MODE_MULTIPLE_MODAL);
gridView.setMultiChoiceModeListener(new MultiChoiceModeListener());
to działa dobrze:
gridView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View v,
int position, long id) {
ImageView iv = (ImageView) v
.findViewById(R.id.imageview2);
ViewGroup gridChild = (ViewGroup) gridView
.getChildAt(position);
ViewGroup gridGrandChild = (ViewGroup) gridChild
.getChildAt(0);
ViewGroup gridGreatGrandChild = (ViewGroup) gridGrandChild
.getChildAt(0);
int childSize = gridGreatGrandChild.getChildCount();
if (iv.getId() == gridGreatGrandChild.getChildAt(1)
.getId()) {
if (iv.getVisibility() == 4)
iv.setVisibility(View.VISIBLE);
else
iv.setVisibility(View.INVISIBLE);
}
}});
Staram się realizować takie same kod wewnątrz klasy MultiChoiceModeListener() af ter menu CAB jest aktywne. Skopiowano ten sam kod w metodzie, co metoda
public void onItemCheckedStateChanged(ActionMode mode, int position,
long id, boolean checked) {
}
. Ale nie mogę uzyskać dostępu do elementów wewnątrz grupy widoku. Ale jestem w stanie uzyskać dostęp do GridView w całości. Ale nie pojedyncze dziecko w Sieci.
Oto mój gridview układ:
<GridView
android:id="@+id/grid_view"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:columnWidth="190dp"
android:drawSelectorOnTop="true"
android:choiceMode="multipleChoice"
android:horizontalSpacing="3dp"
android:listSelector="@drawable/list_selector"
android:numColumns="auto_fit"
android:paddingRight="4dp"
android:stretchMode="spacingWidthUniform"
android:verticalSpacing="3dp" >
</GridView>
Każda pozycja w GridView jest wykonana z tego układu:
<FrameLayout
android:id="@+id/frameLayout1"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<RelativeLayout
android:id="@+id/relativelayout"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<ImageView
android:id="@+id/imageview"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
</ImageView>
<ImageView
android:id="@+id/imageview2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/imageview"
android:layout_alignLeft="@+id/imageview"
android:layout_alignRight="@+id/imageview"
android:layout_alignTop="@+id/imageview"
android:visibility="invisible"
android:background="#76f9a49c"
>
</ImageView>
</RelativeLayout>
<ImageView
android:id="@+id/tagimage"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="top|right"
android:layout_marginRight="-4dp"
android:src="@drawable/tag"
android:visibility="invisible" />
<ImageView
android:id="@+id/countimage"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|right"
android:layout_marginBottom="8dp"
android:layout_marginRight="5dp"
android:src="@drawable/dealcount_overlay"
android:visibility="invisible" />
<TextView
android:id="@+id/count"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|right"
android:layout_marginBottom="11dp"
android:layout_marginRight="24dp"
android:text="100"
android:textColor="#fff"
android:visibility="invisible" >
</TextView>
<ProgressBar
android:id="@+id/progressbar"
style="@android:style/Widget.ProgressBar.Small"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:layout_gravity="center"
android:visibility="visible" />
</FrameLayout>
<TextView
android:id="@+id/textView_nodata"
android:layout_width="wrap_content"
android:layout_height="150dp"
android:layout_below="@+id/frameLayout1"
android:layout_centerHorizontal="true"
android:text="No data available. Try different query!"
android:textAppearance="?android:attr/textAppearanceLarge"
android:visibility="gone" />
</RelativeLayout>
Oto moja list_selector.xml:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@color/gridviewlistselector" android:state_focused="true" android:state_pressed="false"/>
<item android:state_focused="true"><shape>
<solid android:color="#66000000" />
</shape></item>
<item android:state_selected="true"><shape>
<solid android:color="#66000000" />
</shape></item>
<item android:state_pressed="true"><shape>
<solid android:color="#66000000" />
</shape></item>
<item android:state_enabled="false" android:state_focused="true"><shape>
<solid android:color="#66000000" />
</shape></item>
</selector>
Jak mogę osiągnąć funkcjonalność? Utknąłem w tym. Próbowałem różnych kombinacji na selektorach. Ale nic nie działa dla mnie. Czy muszę podać jakieś inne szczegóły?
Ale muszę rozwiązanie tylko dla elementów listSelector w moim GridView – intrepidkarthi
to działa na wielu wybrać? – intrepidkarthi
Tak. Żaden inny kod nie był wymagany. 'CHOICE_MODE_MULTIPLE_MODAL' podobny do Twojego. Ponadto pominąłem atrybuty "android: choiceMode" i "android: drawSelectorOnTop". – dokkaebi