有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

在listview中使用Fit_XY的java

holder.item3.setImageResource(custom.getcustomImage());

这是我的自定义ListViewAdapter中保存imageview的一行代码。我需要得到我放入的图像,以便缩小到ListView内的ImageView大小

我想将imageview.setImageResource(custom.getcustomImage());应用于适配器中的项,但出现错误

Cannot invoke setScaleType(ImageView.ScaleType) on the primitive type int

我的代码是这样的

holder.item3.setImageResource(custom.getcustomImage().setScaleType(ScaleType.FIT_XY);

我应该如何使用这个FIT_XY,是否有其他方法可以将ImageView图像放入我的ListView

我的适配器

public class CustomAdapter extends ArrayAdapter<Custom> {
        private ArrayList<Custom> entries;
        private Activity activity;

        public CustomAdapter(Activity a, int textViewResourceId,
                ArrayList<Custom> entries) {
            super(a, textViewResourceId, entries);
            this.entries = entries;
            this.activity = a;
            // TODO Auto-generated constructor stub
        }

        public class ViewHolder {
            public TextView item1;
            public TextView item2;
            public ImageView item3;

        }

        public View getView(int position, View convertView, ViewGroup parent) {
            View v = convertView;
            ViewHolder holder;
            if (v == null) {
                LayoutInflater vi = (LayoutInflater) activity
                        .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                v = vi.inflate(R.layout.rowlayout, null);
                holder = new ViewHolder();
                holder.item1 = (TextView) v.findViewById(R.id.secondLine);
                holder.item2 = (TextView) v.findViewById(R.id.firstLine);
                holder.item3 = (ImageView) v.findViewById(R.id.icon);
                v.setTag(holder);
            } else
                holder = (ViewHolder) v.getTag();

            final Custom custom = entries.get(position);
            if (custom != null) {
                holder.item1.setText(custom.getcustomBig());
                holder.item2.setText(custom.getcustomSmall());
                holder.item3.setImageResource(custom.getcustomImage());
                holder.item3.setScaleType(ScaleType.FIT_XY);
            }
            return v;
        }
    }
}

线路呼叫码

a = new Custom("String one","Stringtwo", R.drawable.image);

行布局

<RelativeLayout xmlns:安卓="http://schemas.安卓.com/apk/res/安卓"
    安卓:layout_width="fill_parent"
    安卓:layout_height="?安卓:attr/listPreferredItemHeight"
    安卓:background="#FFFFFF"
    安卓:padding="6dip" >

    <!-- 安卓:background="@color/Cream" -->

    <ImageView
        安卓:id="@+id/icon"
        安卓:layout_width="wrap_content"
        安卓:layout_height="wrap_content"
        安卓:layout_alignParentBottom="true"
        安卓:layout_alignParentTop="true"
        安卓:layout_marginRight="6dip"
        安卓:contentDescription="TODO"
        安卓:src="@drawable/launchicon" />

    <TextView
        安卓:id="@+id/firstLine"
        安卓:layout_width="fill_parent"
        安卓:layout_height="26dip"
        安卓:layout_alignParentBottom="true"
        安卓:layout_alignParentRight="true"
        安卓:layout_toRightOf="@id/icon"
        安卓:ellipsize="marquee"
        安卓:singleLine="true"
        安卓:text="Example application"
        安卓:textColor="#000000"
        安卓:textSize="12sp" />

    <TextView
        安卓:id="@+id/secondLine"
        安卓:layout_width="fill_parent"
        安卓:layout_height="wrap_content"
        安卓:layout_above="@id/secondLine"
        安卓:layout_alignParentRight="true"
        安卓:layout_alignParentTop="true"
        安卓:layout_alignWithParentIfMissing="true"
        安卓:layout_toRightOf="@id/icon"
        安卓:gravity="center_vertical"
        安卓:text="Description"
        安卓:textColor="#000000"
        安卓:textSize="16sp" />

</RelativeLayout>

共 (1) 个答案

  1. # 1 楼答案

    我看到item3是一个ImageView。您正在尝试将图像应用于该ImageView
    在这里,您的getcustomImage()可能会返回imageResId

    如果getcustomImage()方法返回图像分辨率id(为整数值),请使用

    holder.item3.setImageResource(custom.getcustomImage());
    

    将图像应用于ImageView
    最后,在ImageView上使用setScaleType没有问题

    holder.item3.setScaleType(ScaleType.FIT_XY);
    

    阅读更多关于setImageResourcesetScaleType

    编辑: 很快
    改变这个

    holder.item3.setImageResource(custom.getcustomImage().setScaleType(ScaleType.FIT_XY);
    

    有了这个:

    holder.item3.setImageResource(custom.getcustomImage());
    holder.item3.setScaleType(ScaleType.FIT_XY);
    

    编辑:rowlayout.xml处对ImageView说wrap_content to your rowlayout.xml就是在取消scaleType选项,因为ImageView将根据图像大小调整自身大小。你可能想给一个静态宽度,以便在你的列表上获得更好的视觉效果(所有图像的宽度都是相等的)。你想要FITXY,但是考虑使用CIMTIN作为一种选择(更好的观点)。并尝试在rowlayout中使用scaleOption,以便在图形布局中查看其输出

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="?android:attr/listPreferredItemHeight"
        android:background="#FFFFFF"
        android:padding="6dip" >
    
        <!  android:background="@color/Cream"  >
    
        <ImageView
            android:id="@+id/icon"
            android:layout_width="100dp"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:layout_alignParentTop="true"
            android:layout_marginRight="6dip"
            android:contentDescription="TODO"
            android:src="@drawable/launchicon" 
            android:scaleType="fitXY"/>
    
        <TextView
            android:id="@+id/firstLine"
            android:layout_width="wrap_content"
            android:layout_height="26dip"
            android:layout_alignParentBottom="true"
            android:layout_alignParentRight="true"
            android:layout_toRightOf="@id/icon"
            android:ellipsize="marquee"
            android:singleLine="true"
            android:text="Example application"
            android:textColor="#000000"
            android:textSize="12sp" />
    
        <TextView
            android:id="@+id/secondLine"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_above="@id/firstLine"
            android:layout_alignParentRight="true"
            android:layout_alignParentTop="true"
            android:layout_alignWithParentIfMissing="true"
            android:layout_toRightOf="@id/icon"
            android:gravity="center_vertical"
            android:text="Description"
            android:textColor="#000000"
            android:textSize="16sp" />
    
    </RelativeLayout>