android – 如何使用Drawable图像名称从ArrayList动态设置ImageViews源?

android – 如何使用Drawable图像名称从ArrayList动态设置ImageViews源?,第1张

概述我有一个ListView,每行有一个 ImageView,一个TextView和另一个ImageView. 下面的代码是我的ListView行的xml: <?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:ori 我有一个ListVIEw,每行有一个 ImageVIEw,一个TextVIEw和另一个ImageVIEw.

下面的代码是我的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源?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/1134287.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-30
下一篇2022-05-30

发表评论

登录后才能评论

评论列表(0条)

    保存