1

テキストビューに文字列とアイコンを表示するカスタムアダプタがありますが、このテキストビューの最後に、すべての行に同じxmlのdrawableEndがあります。リストが大きい場合、画面は最後の矢印をロードできますが、描画されていません。下にスクロールし、リストを上に移動すると、アダプタはアイコンとテキストのみをロードします。アダプタで描画可能を設定しない場合、texviewは正常に描画されますが、アイコンを実用的に変更したいと思います。android devでAPIレベル17でサポートされることがわかりますが、アダプターで使用できなくなりました。これを解決する方法はありますか?

これは私の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;
}
}
4

2 に答える 2

1

新しいapilv17には、このための作業方法があります。TextViewをTextViewとImageViewに分離することは、古いAPIで私のためにトリックを行います

于 2013-03-06T01:03:14.470 に答える
0

これはすべての状況で機能するわけではありませんが、とを使用android:width="wrap_content"してdrawableLeftみてくださいdrawableRight

MyExtension.myExtension(string_item);
holder.text_view.setDrawableRight(MyExtension.file_icon_is);
于 2012-11-13T19:46:23.233 に答える