2010-07-01 2 views
1

홈 화면을 길게 누르면 나타나는 메뉴와 비슷한 아이콘이있는 항목 목록을 표시 할 수 있도록 사용자 지정 어댑터를 만들고 있습니다.Android ListView 사용자 지정 어댑터의 항목을 선택할 수 없음

목록 항목을 클릭 할 수없는 몇 가지 이유가 있습니다. D 패드로 이동할 수는 있지만 어떤 방식 으로든 클릭 할 수는 없습니다. 문제가 AlertDialog와 함께 사용하고 있다고 생각 했으므로 다른 곳에서 작동하는 어댑터를 교체했지만 동일한 문제가있었습니다.

ArrayList<IconListItem> mItems; 
LayoutInflater mInflater; 

public IconListAdapter(Context context, ArrayList<IconListItem> items) { 
    mInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    mItems = items; 
} 

public IconListAdapter(Context context) { 
    this(context, new ArrayList<IconListItem>()); 
} 

public void add(IconListItem item) { 
    mItems.add(item); 
    notifyDataSetChanged(); 
    return item; 
} 

public void remove(IconListItem item) { 
    mItems.remove(item); 
    notifyDataSetChanged(); 
} 

@Override 
public int getCount() { 
    return mItems.size(); 
} 

@Override 
public IconListItem getItem(int position) { 
    return mItems.get(position); 
} 

@Override 
public long getItemId(int position) { 
    return position; 
} 

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    View view; 
    if(convertView == null){ 
     view = mInflater.inflate(R.layout.two_line_icon_list_item, null); 
    } else { 
     view = convertView; 
    } 


    IconListItem item = mItems.get(position); 
    TextView lineOne = (TextView) view.findViewById(R.id.firstLine); 
    TextView lineTwo = (TextView) view.findViewById(R.id.secondLine); 
    ImageView iconImage = (ImageView) view.findViewById(R.id.icon); 

    lineOne.setVisibility(View.VISIBLE); 
    lineTwo.setVisibility(View.VISIBLE); 
    iconImage.setVisibility(View.VISIBLE); 

    lineOne.setText(item.getText()); 

    if (item.getSubtext() == null) 
     lineTwo.setVisibility(View.GONE); 
    else 
     lineTwo.setText(item.getSubtext()); 



    if (item.getIcon() == null) 
     iconImage.setVisibility(View.GONE); 
    else 
     iconImage.setImageDrawable(item.getIcon()); 


    return view; 
} 

을 그리고 XML 그것은 팽창 것 :

내 어댑터는 다음과 같습니다

<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:padding="6dip" 
> 
    <ImageView 
     android:id="@+id/icon" 
     android:layout_width="wrap_content" 
     android:layout_height="fill_parent" 
     android:layout_marginRight="6dip" 
    /> 
    <LinearLayout 
     android:orientation="vertical" 
     android:layout_width="wrap_content" 
     android:layout_weight="1" 
     android:layout_height="fill_parent" 
    > 
     <TextView 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:layout_weight="1" 
      android:gravity="center_vertical" 
      android:id="@+id/firstLine" 
      android:ellipsize="marquee" 
      android:inputType="text" 
     /> 
     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="0dip" 
      android:layout_weight="1"   
      android:ellipsize="marquee" 
      android:id="@+id/secondLine" 
      android:inputType="text" 
     />   
    </LinearLayout> 
</LinearLayout> 

편집 : 나는 그들이 클릭하지 말할 때, 나는 그들이 항목을 할 수 있다는 것을 의미

내가 그들을 누르거나 onItemClick이 호출되지 않았을 때 주황색으로 강조 표시하지 않습니다. 내 코드에서

나는이 다른 목적을 위해 다른 어댑터를 가지고 있고 완벽하게

this.foos= foos; 
fa = new FooAdapter(this.foos); 
fooList.setAdapter(fa); 

// View the details for an item when it is selected 
fooList.setOnItemClickListener(new OnItemClickListener() { 
    @Override 
    public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, 
      long arg3) { 
     Intent i = new Intent(MyActivity.this, MyOtherActivity.class); 
     i.putExtra("foo", ((fooAdapter)arg0.getAdapter()).getItem(arg2)); 
     i.putExtra("list_position", arg2); 
     MyActivity.this.startActivityForResult(i, 0); 
    } 
}); 

작동하지만

IconListAdapter ila = new IconListAdapter(this); 
ila.add(0, "Test 1", android.R.drawable.ic_menu_mylocation); 
ila.add(0, "Test 2", android.R.drawable.ic_menu_edit); 
ila.add(0, "Test 3", android.R.drawable.ic_menu_search); 
groupList.setAdapter(ila); 

의 처음 3 줄을 바꿀 때 작동이 중지됩니다.

+0

당신은 "클릭 할 수 없습니다"무엇을 의미합니까? 클릭 리스너를 어디에서 설정하고 있는지 알려주십시오. – Cristian

+0

@Cristian Castiblanco 질문에 대한 더 많은 정보를 편집했습니다. –

답변

1

가 나는 문제를 발견했다. 원인을 찾을 때까지 레이아웃 파일에서 줄을 하나씩 지 웠습니다.

문제의 원인이되는 줄은 두 줄 android:inputType="text"입니다. 그들은 시스템이 두 개의 TextView가 입력이라고 생각하게 만들었을 것입니다. 나는 그것을 android:inputType="none"으로 바꿨고 이제는 작동합니다.

singleLine의 사용이 권장되지 않는다는 거대한 툴팁의 경우 분명히 좋았을 것입니다.

-1

ListView의 항목을 클릭하면 setOnItemClickListener을 호출해야합니다. 이 같은

뭔가 :

ListView lv = (ListView)findViewById(R.id.your_list_view); 

lv.setOnItemClickListener(new OnItemClickListener() { 
    public void onItemClick(AdapterView arg0, View arg1, int arg2, long arg3) { 
     Log.v(TAG, "Item clicked"); 
     // whatever you want to do with the clicked item... 
    } 
}); 
+0

아니, 그게 문제가 아니야. OnItemClickListener가 구현되어 있습니다. 다른 문제가 있습니다. 목록에있는 항목은 클릭 할 수 없으므로 내가 그들을 말할 때 주황색으로 강조 표시하지 않습니다. –

0

는 몇 시간을 소비 한 후,이 속성 목록 내에서 textviews의에 설정되어있는 경우 다음 목록보기 항목을 선택할 수 없습니다 발견 :

android:textIsSelectable="true" 
관련 문제