2012-11-13 41 views
1

我有自定義適配器顯示字符串和圖標在textview中,但在這個textview的結尾我有drawableEnd在所有行相同的XML,如果列表較大,然後屏幕可以加載最後的箭頭沒有繪製,當我向下滾動時,如果我在列表中,適配器只加載圖標和文本。如果我不在適配器中設置drawable,那麼texview可以正常繪製,但是我想要務實地改變我的圖標。我可以看到在android dev將支持api級別17,但現在我不能在我的適配器中使用它,有沒有辦法解決這個問題?自定義適配器不加載drawableEnd在文本視圖

這是我的xml:

<?xml version="1.0" encoding="utf-8"?> 
<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
     xmlns:tools="http://schemas.android.com/tools" 
android:id="@+id/item" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:gravity="center_vertical" 
android:layout_gravity="center_vertical" 
android:padding="4dp" 
android:drawablePadding="4dp" 
android:drawableLeft="@drawable/file" 
PROBLEM -> android:drawableEnd="@drawable/next" > 
</TextView> 

和我的適配器代碼:

public class MyAdapter extends ArrayAdapter<String> { 
Context context; 
int layout_resourceId; 
ArrayList<String> list_text; 

public MyAdapter(Context context, int layout_resourceId, ArrayList<String> list_text) { 
    super(context, layout_resourceId, list_text); 
    this.context = context; 
    this.layout_resourceId = layout_resourceId; 
    this.list_text = list_text; 
} 

@Override 
public View getView(int position, View convert_view, ViewGroup parent) { 
    View row = convert_view; 
    MyItemHolder holder = null; 

    if(row == null) { 
     LayoutInflater inflater = ((Activity)context).getLayoutInflater(); 
     row = inflater.inflate(layout_resourceId, parent, false); 

     holder = new MyItemHolder(); 
     holder.text_view = (TextView)row.findViewById(R.id.item); 
     holder.icon_view = (TextView)row.findViewById(R.id.item); 

     row.setTag(holder); 
    } 
    else { 
     holder = (MyItemHolder)row.getTag(); 
    } 

    //text 
    String string_item = list_text.get(position); 
    holder.text_view.setText(string_item); 

    //icon 
    MyExtension.myExtension(string_item); 
    int drawable = MyExtension.file_icon_is; 
    holder.icon_view.setCompoundDrawablesWithIntrinsicBounds(drawable, 0, 0, 0); 

    return row; 
} 
public static class MyItemHolder { 
    TextView icon_view; 
    TextView text_view; 
} 
} 

回答

1

新的api lv 17有這方面的工作方法。分離TextView到TextView和ImageView在老apis上做我的伎倆

0

這不會在所有情形下工作,但嘗試使用android:width="wrap_content"drawableLeftdrawableRight

MyExtension.myExtension(string_item); 
holder.text_view.setDrawableRight(MyExtension.file_icon_is); 
+0

我會玩這個,但我認爲沒有辦法在圖像的最後行。它會在文本結尾處繪製,對嗎? –

+0

如果你的文字是一行,你應該看到:'@我的文字@'。 – Sam

+0

嘿,只是準時我已經運行更新和什麼看到api lv 17現在正在下載:)所以新的方法「setCompoundDrawablesRelativeWithIntrinsicBounds(int start,int top,int end,int bottom)」現在將可用。 –

相關問題