Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/196.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在listview中设置imageview的图像会产生奇怪的结果_Java_Android_Android Listview_Android Imageview - Fatal编程技术网

Java 在listview中设置imageview的图像会产生奇怪的结果

Java 在listview中设置imageview的图像会产生奇怪的结果,java,android,android-listview,android-imageview,Java,Android,Android Listview,Android Imageview,我有一个自定义listview,它在列表行布局中有一个SmartImageView() 我正在尝试将每行上的每个SmartImageView设置为图片,下面是我的列表适配器 private class MyListAdapter extends ArrayAdapter<ListItem> { private ArrayList<ListItem> items; public MyListAdapter(Context context,

我有一个自定义listview,它在列表行布局中有一个SmartImageView()

我正在尝试将每行上的每个SmartImageView设置为图片,下面是我的列表适配器

private class MyListAdapter extends ArrayAdapter<ListItem> {

        private ArrayList<ListItem> items;

        public MyListAdapter(Context context, int textViewResourceId, ArrayList<ListItem> items) {
                super(context, textViewResourceId, items);
                this.items = items;
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
                View v = convertView;
                if (v == null) {
                    LayoutInflater vi = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                    v = vi.inflate(R.layout.item_row_layout, null);
                }
                ListItem o = items.get(position);
                if (o != null) {
                        TextView title = (TextView) v.findViewById(R.id.ptitle);
                        TextView site = (TextView) v.findViewById(R.id.site);
                        TextView price = (TextView) v.findViewById(R.id.price);
                        SmartImageView img = (SmartImageView) findViewById(R.id.smallimage);

                        Typeface font = Typeface.createFromAsset(getAssets(), "Asap-Regular.ttf");  
                        site.setTypeface(font);
                        title.setTypeface(font); 
                        price.setTypeface(font);

                        if (title != null) {
                            title.setText(o.getTitle());                            
                        }
                        if (site != null) {

                              site.setText("Supplier Name");

                        }
                        if (price != null) {
                            price.setText("£"+ String.valueOf(o.getPrice()));                            
                        }
                        if (img != null){
                            String url = o.getImage();
                            img.setImageUrl(url);
                        }





                }
                return v;
        }

    }
私有类MyListAdapter扩展了ArrayAdapter{
私有ArrayList项;
公共MyListAdapter(上下文上下文、int-textViewResourceId、ArrayList项){
super(上下文、textViewResourceId、项);
这个项目=项目;
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
视图v=转换视图;
如果(v==null){
LayoutInflater vi=(LayoutInflater)getSystemService(Context.LAYOUT\u INFLATER\u SERVICE);
v=vi.充气(R.布局.项目排排布局,空);
}
ListItem o=items.get(位置);
如果(o!=null){
TextView标题=(TextView)v.findViewById(R.id.ptitle);
TextView站点=(TextView)v.findViewById(R.id.site);
TextView价格=(TextView)v.findViewById(R.id.price);
SmartImageView img=(SmartImageView)findViewById(R.id.smallimage);
Typeface font=Typeface.createFromAsset(getAssets(),“Asap Regular.ttf”);
site.setTypeface(字体);
标题.设置字体(字体);
price.setTypeface(字体);
如果(标题!=null){
title.setText(o.getTitle());
}
如果(站点!=null){
site.setText(“供应商名称”);
}
如果(价格!=null){
price.setText(“£”+String.valueOf(o.getPrice());
}
如果(img!=null){
字符串url=o.getImage();
img.setImageUrl(url);
}
}
返回v;
}
}
所有其他东西都设置好了,如标题、价格等,但是图像设置不正确

如果有多个列表项,则最上面的项将获得最后一个项图像,其余项没有图像集。 如果列表中有一个项目,则根本不会设置图像


如果你需要更多的代码或信息,一定要让我知道

您应该通过调用

SmartImageView img=(SmartImageView)v.findViewById(R.id.smallimage)


这样,您可以获得列表中每个视图中的SmartImageView,否则,它不会获取特定于listview中该行的SmartImageView。

设置img.setBackgroundDrawable(null);当img为空时,应该可以解决您的问题。@Tarun的评论是正确的解决方案,而不是下面正确的答案。这与回收有关。这是在重复使用视图。@dannyroa下面的答案对我有用,所以被标记为such@ZacPowell字体是的,它是有效的,但它不是正确的方法。