android – 从某个元素访问ListView的其他元素的视图

android – 从某个元素访问ListView的其他元素的视图,第1张

概述我有一个ListView,其每个元素都是自定义布局.布局由两个框架组成:第一个是TextView,第二个是由两个图像组成的LinearLayout.我想要做的是,如果我单击ListView的一个元素,如果LinearLayout“消失”,它将“可见”,TextView将被禁用.如果LinearLayout是“可见的”,它会“消失”而TextView会被禁用.这是我的以下代码: 码: ListVie 我有一个ListVIEw,其每个元素都是自定义布局.布局由两个框架组成:第一个是TextVIEw,第二个是由两个图像组成的linearLayout.我想要做的是,如果我单击ListVIEw的一个元素,如果linearLayout“消失”,它将“可见”,TextVIEw将被禁用.如果linearLayout是“可见的”,它会“消失”而TextVIEw会被禁用.这是我的以下代码:

码:

ListVIEw lvw = (ListVIEw) layout.findVIEwByID(R.ID.formats);            formatAdapter adapter = new formatAdapter(act,arr);    //act is context and arr is an array of String            lvw.setAdapter(adapter);             lvw.setonItemClickListener(new OnItemClickListener() {                @OverrIDe                public voID onItemClick(AdapterVIEw<?> arg0,VIEw arg1,int arg2,long arg3) {                    TextVIEw tev = (TextVIEw) arg1                            .findVIEwByID(R.ID.formatN);                    linearLayout extraB = (linearLayout) arg1                            .findVIEwByID(R.ID.extrabuttons);                    if (extraB.getVisibility() == VIEw.GONE) {                        extraB.setVisibility(VIEw.VISIBLE);                        tev.setEnabled(false);                    } else {                        extraB.setVisibility(VIEw.GONE);                        tev.setEnabled(true);                    }                }            });

formatAdapter.java

public class formatAdapter extends BaseAdapter {LayoutInflater Inflater;Context con;String[] names;public formatAdapter(Context c,String[] s) {    con = c;    names = s;    Inflater = (LayoutInflater) con            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);}@OverrIDepublic int getCount() {    return names.length;}@OverrIDepublic Object getItem(int arg0) {    return null;}@OverrIDepublic long getItemID(int arg0) {    return 0;}@OverrIDepublic VIEw getVIEw(int arg0,VIEwGroup arg2) {    VIEw v1 = arg1;    v1 = Inflater.inflate(R.layout.adapter_formats,null);    TextVIEw tv = (TextVIEw) v1.findVIEwByID(R.ID.formatN);    tv.setText(names[arg0]);    return v1;}}

adapter_formats.xml

<?xml version="1.0" enCoding="utf-8"?><FrameLayout xmlns:androID="http://schemas.androID.com/apk/res/androID"androID:layout_wIDth="match_parent"androID:layout_height="match_parent" ><TextVIEw    androID:ID="@+ID/formatN"    androID:layout_wIDth="fill_parent"    androID:layout_height="wrap_content"    androID:padding="10dp" /><linearLayout    androID:ID="@+ID/extrabuttons"    androID:layout_wIDth="wrap_content"    androID:layout_height="wrap_content"    androID:layout_gravity="center_horizontal"    androID:orIEntation="horizontal"     androID:visibility="gone">    <ImageVIEw        androID:ID="@+ID/play"        androID:layout_wIDth="wrap_content"        androID:layout_height="wrap_content"        androID:contentDescription="@string/cD"        androID:src="@drawable/img_29" />    <VIEw        androID:layout_wIDth="50dp"        androID:layout_height="0dp"        androID:contentDescription="@string/cD" />    <ImageVIEw        androID:ID="@+ID/download"        androID:layout_wIDth="wrap_content"        androID:layout_height="wrap_content"        androID:src="@drawable/img_31" /></linearLayout></FrameLayout>

现在,我希望如果对于任何元素,linearLayout是可见的,如果我点击其他元素,那么元素linearLayout就会消失,TextVIEw会启用(默认布局).让我用例子解释:如果我克隆了第一个元素,它的linearLayout就可见了.我希望如果我点击第二个元素,第一个元素的线性布局会自动消失.我试着解释得很好,但对不起,如果我无法解释好.谁能帮我这个?

解决方法 刚找到一种方法来做到这一点,我觉得很棒:)虽然这种方式不是真的:P
为了隐藏其他列表的视图,我在我的类中全局访问了一个视图并将其初始化为null(视图是我要隐藏的同一个类,例如,这里我想使前一个列表元素的线性布局消失,所以我采取了全局线性布局).然后在每个onItemClickListener中,我将以下代码放在开头:

if(myGlobalVIEw!=null)    {    myGlobalVIEw.hIDe();    }

此外,当我使其他列表元素的视图可见时,我通过以下代码将该视图分配给我的全局视图:

myGlobalVIEw = myCurrentVIEw;

希望它能帮到别人:)

总结

以上是内存溢出为你收集整理的android – 从某个元素访问ListView的其他元素的视图全部内容,希望文章能够帮你解决android – 从某个元素访问ListView的其他元素的视图所遇到的程序开发问题。

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

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

原文地址: http://outofmemory.cn/web/1127497.html

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

发表评论

登录后才能评论

评论列表(0条)

保存