
下面的代码是我的ListVIEw行的xml:
<?xml version="1.0" enCoding="utf-8"?><linearLayout xmlns:androID="http://schemas.androID.com/apk/res/androID"androID:orIEntation="horizontal"androID:layout_wIDth="match_parent"androID:layout_height="60dp"androID:background="#FFF"><ImageVIEwandroID:ID="@+ID/left"androID:layout_wIDth="50dp"androID:layout_height="50dp"androID:layout_gravity="center"androID:src="@drawable/ic_default"androID:layout_marginleft="10dp"androID:layout_marginRight="10dp" /><TextVIEwandroID:ID="@+ID/text"androID:layout_wIDth="match_parent"androID:layout_height="wrap_content"androID:layout_gravity="center"androID:gravity="center"androID:layout_weight="1"androID:textSize="16sp" /><ImageVIEwandroID:ID="@+ID/right"androID:layout_wIDth="50dp"androID:layout_height="match_parent"androID:layout_gravity="center"androID:src="@drawable/ic_cena_play"androID:layout_marginRight="0dp"androID:layout_marginleft="10dp"androID:clickable="true"androID:background="@drawable/mybuttonplay" /></linearLayout>
我有一个ArrayList<字符串>使用Drawables的名称,我想放在行的第一个ImageVIEw中.我想将ImageVIEws源“ic_default”更改为在ArrayList中具有名称的那些源.
在我的Activity中,在onCreate()中,我正在使用一个Adapter,如下面的代码所示:
ArrayList<String> items = new ArrayList();items.add("Star");items.add("Moon");items.add("Dog");items.add("Bird");items.add("Tree");ArrayList<String> itemsimg = new ArrayList();itemsimg.add("ic_star");itemsimg.add("ic_moon");itemsimg.add("ic_dog");itemsimg.add("ic_bird");itemsimg.add("ic_tree");ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,R.layout.scenesrow,R.ID.text,items) { @OverrIDe public VIEw getVIEw(int position,VIEw convertVIEw,VIEwGroup parent) { VIEw row = super.getVIEw(position,convertVIEw,parent); ImageVIEw left = (ImageVIEw) row.findVIEwByID(R.ID.left); //here I want to change the resource //like if I had a function called getRosourceID(). DOES IT EXIST?! int x = getResourceID( itemsimg.get(position) ); left.setimageResource(x); VIEw right = row.findVIEwByID(R.ID.right); right.setTag(position); right.setonClickListener(ScenesActivity.this); return row; } }; 更新
谢谢你的回答!现在我可以通过dinamically更改ImageVIEw源(但尚未从ArrayList< String>中更改).之前没有setimageResource()方法,因为我有一个VIEw.随着你对所有人的建议施展到ImageVIEw,大部分问题都没问题.但答案并没有涵盖“资源名称”的恐怖之处.
现在的最后一个问题是left.setimageResource(resID);方法从Resource请求一个ID,我有一个String.怎么做?
抱歉,其他代码版本有一些错误.现在它已修复.我认为现在最后一个问题很清楚了.
解决方法ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,items) {@OverrIDepublic VIEw getVIEw(int position,VIEwGroup parent) { VIEw row = super.getVIEw(position,parent); ImageVIEw left = (ImageVIEw)row.findVIEwByID(R.ID.left); left.setonClickListener(ScenesActivity.this); ImageVIEw right = (ImageVIEw)row.findVIEwByID(R.ID.right); right.setTag(position); right.setimageResource(itemsimg.get(position)); left.setimageResource(itemsimg.get(position)); right.setonClickListener(ScenesActivity.this); return row; } 将items更改为:
ArrayList<Integer> itemsimg = new ArrayList<Integer>();itemsimg.add(R.drawable.ic_star);itemsimg.add(R.drawable.ic_moon);itemsimg.add(R.drawable.ic_dog);itemsimg.add(R.drawable.ic_bird);itemsimg.add(R.drawable.ic_tree);
要使用String获取drawableID,您可以执行以下 *** 作:
Context context = imageVIEw.getContext();int ID = context.getResources().getIDentifIEr("ic_tree","drawable",context.getPackagename());imageVIEw.setimageResource(ID); 它效率不高,但它可以查找偶尔的资源.
总结以上是内存溢出为你收集整理的android – 如何使用Drawable图像名称从ArrayList动态设置ImageViews源?全部内容,希望文章能够帮你解决android – 如何使用Drawable图像名称从ArrayList动态设置ImageViews源?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)