Android 自定义适配器未在textview中加载drawableEnd

Android 自定义适配器未在textview中加载drawableEnd,android,listview,adapter,Android,Listview,Adapter,我有一个自定义适配器,它在textview中显示字符串和图标,但在这个textview的末尾,我有一个xml格式的drawableEnd,它与所有行相同,如果列表更大,那么屏幕可以加载末尾的箭头,当我向下滚动时,如果我在列表中向上滚动,适配器只加载图标和文本。如果我没有在适配器中设置drawable,texview可以绘制,但是我想实用地更改图标。我可以在api级别17中看到支持,但是现在我不能在我的适配器中使用它,有办法解决这个问题吗 这是我的xml: <?xml version="1.

我有一个自定义适配器,它在textview中显示字符串和图标,但在这个textview的末尾,我有一个xml格式的drawableEnd,它与所有行相同,如果列表更大,那么屏幕可以加载末尾的箭头,当我向下滚动时,如果我在列表中向上滚动,适配器只加载图标和文本。如果我没有在适配器中设置drawable,texview可以绘制,但是我想实用地更改图标。我可以在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>

android:drawableEnd=“@drawable/next”>
和我的适配器代码:

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;
}
}
公共类MyAdapter扩展了ArrayAdapter{
语境;
int-layou-resourceId;
数组列表\文本;
公共MyAdapter(上下文上下文、int布局\u资源ID、ArrayList列表\u文本){
超级(上下文、布局、资源ID、列表、文本);
this.context=上下文;
this.layout\u resourceId=layout\u resourceId;
this.list_text=列表_text;
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
视图行=转换视图;
MyItemHolder=null;
if(行==null){
LayoutInflater充气器=((活动)上下文)。getLayoutInflater();
行=充气机。充气(布局\资源ID,父项,false);
holder=新的MyItemHolder();
holder.text\u view=(TextView)row.findViewById(R.id.item);
holder.icon\u view=(TextView)row.findViewById(R.id.item);
row.setTag(支架);
}
否则{
holder=(MyItemHolder)行。getTag();
}
//正文
String\u item=list\u text.get(位置);
holder.text\u view.setText(字符串项);
//图标
MyExtension.MyExtension(字符串项);
int drawable=MyExtension.file_图标_为;
holder.icon_view.SetCompoundDrawablesWithinInstructBounds(可绘制,0,0,0);
返回行;
}
公共静态类MyItemHolder{
文本视图图标_视图;
文本视图文本视图;
}
}

这不会在所有情况下都起作用,但请尝试将
android:width=“wrap\u content”
drawableLeft
drawableRight
一起使用

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

这并不适用于所有情况,但请尝试将
android:width=“wrap\u content”
drawableLeft
drawableRight
一起使用

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

新的api lv 17对此有工作方法。将TextView与TextView和ImageView分离在旧api上为我提供了窍门

新的api lv 17为此提供了工作方法。将TextView与TextView和ImageView分离在旧的API上对我来说是一个好办法

我将使用它,但我认为没有办法在行的末尾绘制图像。它将在文本的末尾绘制,对吗?如果您的文本是一行,那么您应该看到:
@My text@
。嘿,正好赶上我运行了更新程序,现在正在下载api lv 17的内容:)所以新方法“setCompoundDrawablesRelativeWithIntrinsicBounds(int-start,int-top,int-end,int-bottom)”现在就可以了。我会玩这个游戏,但我认为没有办法在这一行的末尾绘制图像。它将在文本的末尾绘制,对吗?如果您的文本是一行,那么您应该会看到:
@My text@
。嘿,正好我已经运行了更新程序,现在正在下载api lv 17的内容:)所以新方法“setCompoundDrawablesRelativeWithIntrinsicBounds(int-start,int-top,int-end,int-bottom)”现在将可用。