2016-08-29 2 views
2

Я пытаюсь выделить выделенный элемент в gridview (динамически заполненный адаптером), но он не работает.Выделите выделенный элемент на gridview

Я занимался исследованиями, и я даже попытался скопировать именно селектор других людей и даже то, как они поместили его в gridview, но я не могу заставить его работать.

Он просто ничего не делает. Фон каждого элемента белый (например, я хотел), но когда я его нажимаю (он находится поверх текстового изображения или изображения (часть элемента gridview), он ничего не делает. Если я выхожу из ImageView или TextView, он будет делать то, что я хочу

EDIT:. у меня есть слушатели для изображений и TextViews, так что может быть мешая этим селектором Как я мог решить эту проблему

Вот? код деятельности, где я создать GridView:

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.highway_appselection_activity); 
    gridView= (GridView) findViewById(R.id.HighwayGridView); 

    gridView.setSelector(new ColorDrawable(Color.BLACK)); 

Вот XML каждого элемента этого GridView: (где я определить фон, как селектор)

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:id="@+id/HighwayGridViewItem" 
android:orientation="vertical" 
android:background="@drawable/highway_appselection_selector" 
android:padding="5dp"> 

<cm.aptoide.lite.HighwayCustomImageView 
    android:layout_width="72dp" 
    android:layout_height="72dp" 
    android:id="@+id/highwayGridViewItemIcon" 
    android:background="#FFFFFF" 
    android:layout_gravity="center" 
    android:scaleType="centerCrop" 
    android:padding="5dp" 
    android:clickable="true"/> 

<!-- does this need to be my custom image view anymore? CHeck on that--> 
<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:orientation="horizontal"> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="match_parent" 
     android:id="@+id/highwayGridViewItemName" 
     android:textColor="#000000" 
     android:text="texto de teste" 
     android:textSize="10sp" 
     android:focusable="true" 
     android:ellipsize="marquee" 
     android:marqueeRepeatLimit="marquee_forever" 
     android:layout_weight="2" 
     android:textStyle="bold" 
     android:paddingRight="5dp" 
     android:layout_marginLeft="5dp" 
     android:clickable="true"/> 

    <ImageView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:src="@drawable/info_icon" 
     android:padding="5dp" 
     android:clickable="true" 
     android:id="@+id/highwayGridViewItemInfoButton"/> 

А вот мой селектор:

<selector xmlns:android="http://schemas.android.com/apk/res/android" android:exitFadeDuration="@android:integer/config_mediumAnimTime"> 
<item android:state_enabled="true" android:state_pressed="true" android:drawable="@color/green_main_color" /> 
<item android:state_enabled="true" android:state_focused="true" android:drawable="@color/green_main_color" /> 
<item android:state_enabled="true" android:state_selected="true" android:drawable="@color/green_main_color" /> 
<item android:drawable="@android:color/white" /> 

я мог бы что-то отсутствует, я новичок в Android, извините, если есть какие-либо новобранец ошибка.

ответ

5

Создать файл selector.xml как:

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 

    <item android:drawable="@color/green_main_color" android:state_pressed="true"/> 
    <item android:drawable="@color/green_main_color" android:state_selected="true"/> 
    <item android:drawable="@color/white"/> 

</selector> 

Поместите свой файл селектор в вытяжке папке drawable/selector.xml, а затем в вашем GridView:

<GridView 
    android:id="@+id/gridview" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:numColumns="auto_fit" 
    android:verticalSpacing="10dp" 
    android:horizontalSpacing="10dp" 
    android:stretchMode="columnWidth" 
    android:gravity="center" 
    android:listSelector="@drawable/list_selector" 
    android:scrollbars="none" /> 
+0

Но я уже есть это. Мой road_appselection_selector уже находится в выпадающей папке, и я уже помещаю строку android: background = "@ drawable/highway_appselection_selector" на моем gridview –

+0

@ FilipeGonçalves Хорошо, пожалуйста, попробуйте обновить свой selctor.xml, как указано выше, и попробовать. –

+0

@ FilipeGonçalves вы пробовали код выше? –

3

попробовать это:

  int nPrevSelGridItem = -1; 
     gridview.setOnItemClickListener(new OnItemClickListener() { 
       View viewPrev; 

       @Override 
       public void onItemClick(AdapterView<?> parent, View view, 
             int position, long id) { 
        try { 
         if (nPrevSelGridItem != -1) { 
          viewPrev = (View) gridview.getChildAt(nPrevSelGridItem); 
          viewPrev.setBackgroundColor(Color.WHITE); 
         } 
         nPrevSelGridItem = position; 
         if (nPrevSelGridItem == position) { 
          //View viewPrev = (View) gridview.getChildAt(nPrevSelGridItem); 
          view.setBackgroundColor(getResources().getColor(R.color.orange)); 
         } 
        } catch (Exception e) { 
         e.printStackTrace(); 
        } 
       } 
      }); 
+0

Попробуйте выше решение @ Filipe Gonçalves – YUVRAJ

+0

Это не работает, потому что у меня есть для доступа к nPrevSelGridItem, он должен быть окончательным, а затем, если он окончательный, t do nPrevSelGridItem = position –

+0

это решение отлично Работало для меня, поэтому я предлагаю этот для вас @ FilipeGonçalves – YUVRAJ

Смежные вопросы