2012-08-02 1 views
1

내 응용 프로그램에서는 ListView에서 선택한 항목과 다른 배경을 사용하고 싶습니다. 사실 나는 일반 ListView를 가지고 있지 않다. 그 중 ListFragmentgetListView() 메서드를 통해 ListView를 얻고있다. 내가 좋아하는 프로그램 선택기를 적용 :선택한 목록 항목의 배경이 다릅니다.

ListView listview = getListView(); 
listview.setSelector(R.drawable.tablet_settings_list_selector); 

그리고 목록 선택 XML은 같은 것입니다

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
<item android:state_pressed="false" android:state_focused="false" 
    android:drawable="@drawable/tablet_menu_panel" /> 
<item android:state_pressed="true" android:state_focused="true" 
    android:drawable="@drawable/tablet_menu_panel_ontap" /> 
<item android:state_activated="true" 
    android:drawable="@drawable/tablet_selected_menu" /> 
</selector> 

이 내 목록과 같이하는 방법입니다 : 당신이 할 수

ListView with different background for selected item

보세요, 선택된 목록 항목은 다른 배경에 외측 화살표이 있습니다. 어떻게 이것을 할 수 있습니까?

+0

돌출 된 화살표가 다른 조각 위에 있습니까? – Luksprog

+1

http://stackoverflow.com/questions/2562051/listview-item-background-via-custom-selector 여기를 보십시요. – Waqas

+0

@Luksprog : 예. 그리고 그것이 문제가되는 이유입니다. – Rajkiran

답변

0

마지막으로 내가 선택한 항목을 ListView 또는 ListFragment으로 설정할 수 없다는 결론을 내 렸습니다. 그래서, 나는 내 사용자 정의 BaseAdapter를 작성하고 내 문제를 해결했습니다 :) 비슷한 문제를 겪고있는 사람들은 내 BaseAdapter를 getView() 메서드에 중점을 둡니다.

public class ListFragmentListAdapter extends BaseAdapter { 

String[] items; 
Context _context = null; 
private TabletFragment _tabletFragmentChild; 

public ListFragmentListAdapter(Context context, TabletFragment tabletFragmentChild, String[] items) { 
    this.items = items; 
    this._context = context; 
    this._tabletFragmentChild = tabletFragmentChild; 
} 

    //---------------------MOST IMPORTATNT PART---------------------- 
@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    if (convertView == null) { 
     convertView = LayoutInflater.from(_context).inflate(R.layout.tablet_listfragment_list_item, null); 
    } 

    TextView textview = (TextView) convertView.findViewById(R.id.tv_listfragment_list_item); 
    textview.setText(items[position]); 

    convertView.setBackgroundDrawable(null); 
    textview.setTextColor(_context.getResources().getColor(R.color.white)); 

    if(position == _tabletFragmentChild.getSelectedItemIndex()){ 
     convertView.setBackgroundResource(R.drawable.tablet_selected1_menu); 
     textview.setTextColor(Color.BLACK); 
    } 
    return convertView; 
} 
    //------------------------END OF IMP PART0------------------------ 

@Override 
public long getItemId(int position) { 

    return position; 
} 

@Override 
public Object getItem(int position) { 
    return items[position]; 
} 

@Override 
public int getCount() { 

    if (items == null) 
     return 0; 

    return items.length; 
} 
}