2012-08-07 23 views
1

我有一個OnItemClickListener這裏我設置的背景,表示該行一個ListView已選定的Android的ListView setTypeFace和setBackgroundDrawable

itemList.setOnItemClickListener(new OnItemClickListener() { 
    @Override 
    public void onItemClick(AdapterView<?> arg0, View v, int position, long id) { 

     String item = (String) arg0.getItemAtPosition(position); 
     boolean itemSelected = selectedItems.contains(item); 

     if (!itemSelected) { 
      selectedItems.add(item); 
      v.setBackgroundDrawable(getResources().getDrawable(R.drawable.listitem_selected)); 
     } else { 
      selectedItems.remove(item); 
      v.setBackgroundDrawable(null); 
     } 
    }); 

如果我使用一個默認的適配器爲我的ListView,ListView的行適當強調

ArrayList<String> listOfItems = new ArrayList<String>(); 

.... 
final ArrayAdapter<String> itemAdapter = new ArrayAdapter<String>(this, R.layout.list_item, listOfItems); 

如果我使用擴展ArrayAdapter這樣我可以TextView的的字體設置爲自定義字體,字體被正確設定,但背景突出不再工作自定義適配器。有任何想法嗎?

public class ListItemAdapter extends ArrayAdapter<String> { 
    private final Context context; 
    private final ArrayList<String> values; 

    public ListItemAdapter(Context context, ArrayList<String> values) { 
     super(context, R.layout.list_item, values); 
     this.context = context; 
     this.values = values; 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     View rowView = inflater.inflate(R.layout.list_item, parent, false); 
     TextView textView = (TextView) rowView.findViewById(R.id.text1); 

     Typeface tf = Typeface.createFromAsset(getContext().getAssets(), "fonts/font-file.otf"); 
     textView.setTypeface(tf); 
     textView.setText(values.get(position)); 
     return rowView; 
    } 
} 
+0

您是否嘗試爲選定的項目設置背景顏色? – 2012-08-07 17:45:05

+0

爲什麼不使用xml選擇器來更改ListView項目狀態? – Maxim 2012-08-07 17:57:01

回答

1

試試這個。它的工作。它可能對你也有幫助。

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    View rowView = inflater.inflate(R.layout.list_item, parent, false); 
    TextView textView = (TextView) rowView.findViewById(R.id.text1); 

    Typeface tf = Typeface.createFromAsset(getContext().getAssets(), "fonts/font-file.otf"); 
    textView.setTypeface(tf); 
    textView.setText(values.get(position)); 

    rowView.setOnClickListener(new OnClickListener() {    
     @Override 
     public void onClick(View arg0) { 
      arg0.setBackgroundResource(R.drawable.<background>);      
     } 
    }); 
    return rowView; 
} 
0

您還需要設置rowView backgroung在getView()方法