2012-05-27 4 views
0

사용자 지정 어댑터가있는 GridView가 있는데 목록에서 항목을 선택하면 선택기가 잠시 표시된 후 사라집니다. 사용자 지정 어댑터가 원인이되는 것 같아요. 그리고 선택기로 재생하려고했지만 아무 소용이 없습니다.목록의 선택기/GridView가 표시되지 않습니다.

여기 ("조회수, 안녕하세요"의 그리드 샘플보기 기준) 내 어댑터의 :

package shira.android.paintdroid; 

import android.content.Context; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.AbsListView; 
import android.widget.BaseAdapter; 
import android.widget.ImageView; 

class PaintActionsAdapter extends BaseAdapter 
{ 
private Context context; 
private int[] actionsImagesResources; 

public PaintActionsAdapter(Context context) 
{ 
    if (context==null) 
     throw new IllegalArgumentException("The context must be non-null!"); 
    this.context=context; 
    /*actionsImagesResources=context.getResources().getIntArray(R.array. 
      actions_images);*/ 
    actionsImagesResources=new int[6]; 
    for (int counter=0;counter<actionsImagesResources.length;counter++) 
     actionsImagesResources[counter]=R.drawable.pencil; 
} 

public int getCount() { return actionsImagesResources.length; } 

public long getItemId(int position) 
{ return actionsImagesResources[position]; } 

public Object getItem(int position) 
{ return actionsImagesResources[position]; } 

public View getView(int position,View convertView,ViewGroup parent) 
{ 
    ImageView actionImageView; 
    if (convertView==null) 
    { 
     actionImageView=new ImageView(context); 
     AbsListView.LayoutParams layoutParams=new AbsListView.LayoutParams(
       ViewGroup.LayoutParams.FILL_PARENT,ViewGroup.LayoutParams. 
       FILL_PARENT); 
     actionImageView.setLayoutParams(layoutParams); 
     //actionImageView.setAlpha(0); 
    } 
    else actionImageView=(ImageView)convertView; 
    actionImageView.setImageResource(actionsImagesResources[position]); 
    return actionImageView; 
} 
} 

그리고 여기 레이아웃입니다 : 어떤 도움

<GridView android:id="@+id/paint_actions_grid" android:layout_width="0dip" 
     android:layout_height="fill_parent" android:numColumns="2" 
     android:layout_weight="0.15" android:drawSelectorOnTop="true"/> <!-- android:background="@color/ui_background_color"/> --> 
     <!-- android:listSelector="@drawable/actions_list_selector"/> --> 

감사합니다.

다음은 GridView의 모양을 보여줍니다 (지금은 모든 항목이 동일한 이미지를 가지고 있습니다). 선택한 이미지 주위에 어떤 색의 프레임을 그려야하지만, 잠시 후에 사라지는 오렌지색 사각형이 생깁니다.

Screen capture of the grid view

+0

당신은 어떻게 생겼는지 이미지를 게시 할 수 있습니까? – FoamyGuy

답변

5

선택으로 터치 모드 같은 것은 없다 때문입니다. 문서 here을 참조하십시오.

그리드 셀 레이아웃을 클릭 가능 android:clckickable="true"으로 설정 한 다음 here과 같이 ColorStateList를 생성하면이 문제를 해결할 수 있습니다.

이 상태로 사용하려는 상태는 activated입니다. 선택기 XML에서 해당 상태를 사용하십시오.

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_activated="true" android:color="@color/your_activated_color" /> 
    <item android:color="@color/your_standard_color"/> 
</selector> 

그런 다음 선택기 xml을 gridview 셀 레이아웃의 배경으로 설정하십시오. 원하는 효과를 얻을 수 있어야합니다.

관련 문제