编辑:对不起,我从你的意见中意识到我的问题不够清楚.我会发布一个新的.对不起,谢谢你的答案
我从一个Json文件填充一个listview.
使用我的listadapter,我可以轻松地将适当的json数据分配给我的列表的每一行.这对文本有用,例如:
TextView tv = (TextView)ll.findViewById(R.id.descView); tv.setText(i.desc);
使用上述代码,每行都将被正确的json数据填充.
但是,我不会为图像做同样的事情.我试图用我的json数据设置正确的图像:
ImageView iv = (ImageView)ll.findViewById(R.id.imgView); iv.setBackgroundDrawable(context.getResources().getDrawable(i.img));
我想我的参数类型有问题:“setBackgroundDrawable”需要一个可绘制的参数.
“getDrawable”需要一个int.
我将我的字段img的类型设置为int,但是这不起作用.
任何想法为什么?
我的列表适配器:
public class adapter extends ArrayAdapter<ListItems> { int resource; String response; Context context; //Initialize adapter public ListItemsAdapter(Context context,int resource,List<ListItems> items) { super(context,resource,items); this.resource=resource; } @Override public View getView(int position,View convertView,ViewGroup parent) { //Get the current object ListItems i = getItem(position); //Inflate the view if(convertView==null) { ll = new LinearLayout(getContext()); String inflater = Context.LAYOUT_INFLATER_SERVICE; LayoutInflater li; li = (LayoutInflater)getContext().getSystemService(inflater); li.inflate(resource,ll,true); } else { ll = (LinearLayout) convertView; } //For the message TextView tv = (TextView)ll.findViewById(R.id.descView); tv.setText(i.desc); // For the Img ImageView iv = (ImageView)ll.findViewById(R.id.imgView); iv.setBackgroundDrawable(context.getResources().getDrawable(i.img)); return ll; }
我的项目类:
public class ListItems{ int id; int img; String desc;}
和我的json文件的示例:
[{"id":10001,"img":e1,"desc":"desc1"},{"id":10002,"img":e2,"desc":"desc2"},{"id":10003,"img":e3,"desc":"desc3"}]
解决方法
尝试这个
iv.setBackgroundDrawable(context.getResources().getDrawable(R.drawable.img));
要么
iv.setBackgroundResource(R.drawable.img);