android gridview自定义adapter,adapter中的子控件如何隐藏。

如题所示。我在adapter里想隐藏和显示控件,设置viewHolder.mIvLogo.setVisibility(View.VISIBLE);无效。怎样设置才能有效隐藏显示呢?求帮助!

6个回答

 viewHolder.mIvLogo.setVisibility(View.VISIBLE);这是显示
 隐藏是
 viewHolder.mIvLogo.setVisibility(View.INVISIBLE);//隐藏但布局占位
 或
 viewHolder.mIvLogo.setVisibility(View.GONE);//布局不占位
yinxiaopei
懒洋洋大人 回复danielinbiti: 应该不是适配器的问题,我也不知道怎么描述才能回答清楚了== 谢谢 我自己再看看
4 年多之前 回复
danielinbiti
danielinbiti 回复yinxiaopei:你的代码,是不是你这隐藏显示是放在某个item布局中的click事件中?如果是,估计你这代码有问题。点击时的viewHolder.mIvLogo不是你想的这个item内的组件
4 年多之前 回复
yinxiaopei
懒洋洋大人 我知道gone是隐藏 我的意思就是隐藏和显示都没作用 谢谢你
4 年多之前 回复

先在xml文件中 View.GONE 然后在 adapter的getView方法条件判断设置 View.VISIBLE 就可以啦。是不是你条件判断有问题哦

在内部类中调用外部变量需要加final修饰 而final修饰的变量又是不可变的,你前面就好重新赋值,前后矛盾

像这样
if(producttable.get(position).getProducthascoupon().equals("false")){
holder.listjuan.setVisibility(View.GONE);
}else if (producttable.get(position).getProducthascoupon().equals("true")) {
holder.listjuan.setVisibility(View.VISIBLE);
}

    记住一定要设置隐藏和显示判断
yinxiaopei
懒洋洋大人 应该不是适配器的问题,我也不知道怎么描述才能回答清楚了== 谢谢 我自己再看看
4 年多之前 回复
qq_22202859
qq_22202859 回复yinxiaopei: 不能吧,你把代码贴来看看
4 年多之前 回复
yinxiaopei
懒洋洋大人 if(producttable.get(position).getProducthascoupon().equals("false")) 这个就是一个boolean类型类似于flag的东西是吧?我判断了也是无效的。。。if (flag == false) { viewHolder.mImageLogo.setVisibility(View.GONE); } else { viewHolder.mImageLogo.setVisibility(View.VISIBLE); }我在需要隐藏的地方设置了flag = false;还是不行的
4 年多之前 回复

下个断点调试一下就知道了,看程序有没有按你设计的思路走,就能找到问题所在。

感谢大家的回答,不过我都不知道怎么追问,问题不是适配器的原因,我也没有解决。我再看看是什么原因吧。谢谢你们

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
GridView用自定义Adapter
我们可以为GridView添加自定义的Adapter
android gridview adapter 实例
android gridview adapter 实例 每个getview显示不同的数据
android 之自定义Adapter的用法
使用方法:ListView的优化:
Android自定义Adapter适配器
这个是我写的一个自定义Adapter适配器,用来绑定数据到ListView上。我写的代码非常简单易懂
Android之自定义Adapter的ListView
Android之自定义Adapter的ListView
Android自定义adapter的listview
Android自定义adapter的listview代码
Android 自定义Adapter的使用
BaseAdapter源码BaseAdapter.javaListAdapter.java适用于包含enity的自定义adapterBaseModelAdapter.javaBaseAdapter.java继承BaseModelAdapterMyModelAdapter.javaBaseAdapter源码BaseAdapter.java根目录: frameworks/base/core/java/...
自定义Adapter适应ListView和GridView
根据CSDN鸿洋大神的博客自定义Adapter改写而成。可适应大多数的ListView和GridView的适配器需求~~
自定义adapter
public class sportAdapter extends BaseAdapter{ Context context; LayoutInflater  listContainer; //设置contetx  //设置 layoutinflater private ArrayList listItems; //关于你的界面的数据的数组类或者解析文件类 public class
自定义Adapter
压缩包
自定义Adapter将图片在GridView中显示
首先来看一下效果图: 这是使用真机调试的效果图,下面来看如何实现。 第一步:在activity_main.xml中写入GridView,如下: 第二步:在ActivityMain.java中写如下代码: 其中gridView是刚刚我们在xml中的空间,可通过gridView=(GridView) this.findViewById(R.id.gridview);获得。 M
Android ListView,GridView的Adapter封装
这是一个对ListView,GridView Adapter 的 封装, 在 Android中 如果使用到了 ListView 或GridView 一定要 给其 添加 适配器Adapter 但 每次 写对应的 适配器时,其中很多方法都是 重复的 , 所以我这个demo 将其封装了起来,使用的时候,只需继承 我封装的类,然后绑定 数据 就可以了
android GridView adapter相关问题
近期做android应用遇到的一个棘手的问题:用网格视图将sdcard卡中的图片文件和图片名显示出来。我通过SQLite数据库将图片文件的名称和路径存储,然后查询数据库,取得路径再将图片读取出来保存到List>中,然后封装到网格视图的adapter中。rn[color=#FF0000]出现的问题:图片名称可以显示,图片显示不出来。如何在该网格视图的每个网格中添加一个单选按钮。部分代码如下:[/color]rnrnList> list = mpService.findPlateImgs();rn SimpleAdapter adapter = new SimpleAdapter(this, list, R.layout.customgridview, rn new String[] "image", "name" ,rn new int[] R.id.masterplate_image, R.id.masterplate_text );rngridView.setAdapter(adapter);rn gridView.setOnItemClickListener(new OnItemClickListener() ……rn说明:List>该list存储内容:rn Bitmap bitmap = getImage(imagePath);rn map.put("image", bitmap);rn map.put("name", name);rn list.add(map);rnR.layout.customgridview:该布局文件中包含一个ImageView和一个TextView。rn求大虾指导!急!!!rn
在ListView中自定义Adapter
为便于学习自定义的Adapter,本案例的界面未进行美化,功能已经实现,对于其中的getView(int position,View view ,ViewGroup vg)做了数据的填充操作。本案例功能及其简单,只涉及ListView中自定义适配器,没有对其中的点击等其他操作进行展开。
Android 中的adapter和作用以及常见的adapter
简述: adapter是数据与ui之间的桥梁,它把后台数据与前端ui连接到一起,是一个展示数据的载体。 常用的adapter: BaseAdapter : 基础适配器,对于spinner listview gridview 都是通用的,它是一个抽象类,继承后要实现的方法很多 ArrayAdapter : 是BaseAdapter的一个子类,可以直接使用泛型,使用起来比较简单 Cursor
(Android)在自定义的Adapter添加图片
main.xmlrn[code=XML]rnrnrnrn rnrnrn[/code]rnrnlist_content.xmlrn[code=XML]rnrnrnrn rnrn rn rnrn rn rn rnrn rnrn rn rnrn[/code]rnrn问题是:上面的布局文件描述的信息是一行显示三列,怎样在自定义的Adapter添加图片,难点是我将URL存放在集合里,在集合里取出来的URL代表的是一个数据,而我要填充一行三列的数据(也就是三个数据),不知道如何按顺序地填充图片,望指教。
android自定义adapter之简单写法
自定义adapter比较常用,很多人还在使用extends BaseAdapter,然后写一大堆重复的代码,这里是提供一个封装的工具类,把重复的代码都省略掉,让adapter变的简洁一些。     给控件设置adapter的调用代码大概是这样     mGridView.setAdapter(new CommonAdapter(mContext, list, R.layout.item_mai
适配器模式与Android中的Adapter
介绍Java设计模式之适配器模式与Android中的适配器模式的实践Adapter
android adapter
android adapter(listview gridview等的)学习建议和一些注意点
android中adapter的使用
android中ArrayAdapter SimpleAdapter BaseAdapter 的使用
gridview Adapter怎么写
重写了BaseAdapterrn[code=java]rn @Overridern public View getView(int arg0, View arg1, ViewGroup arg2) rn // TODO Auto-generated method stubrn ImageView imageView;rn if(arg1 == null)rn imageView = new ImageView(context);rn imageView.setLayoutParams(new GridView.LayoutParams(45,45));rn imageView.setAdjustViewBounds(false);rn imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);rn imageView.setPadding(8, 8, 8, 8);rn elsern imageView = (ImageView) arg1;rn rn Resources res=getResources(); rn int i=res.getIdentifier(arr[arg0],"drawable",getPackageName()); rn imageView.setImageResource(R.drawable.default_pic);rn return imageView;rn rn[/code]rnrn以上正确的rn现在想用布局文件来完成,我把它修改如下rn[code=java]rn public View getView(int arg0, View arg1, ViewGroup arg2) rn // TODO Auto-generated method stubrn View v ;rn if(arg1 == null)rn v = (View) findViewById(R.layout.items_img);rn ImageView iv1 = (ImageView) v.findViewById(R.id.ItemImage1);rn ImageView iv2 = (ImageView) v.findViewById(R.id.ItemImage2);rn iv1.setImageResource(R.drawable.default_pic);rn iv2.setImageResource(R.drawable.checkbox1);rn elsern v = (ImageView) arg1;rn rn return v;rn rn[/code]rnitems_img.xmlrn[code=java]rnrnrnrnrn[/code]rn运行报错,说我这行空指针,不可能啊!rnImageView iv1 = (ImageView) v.findViewById(R.id.ItemImage1);
多功能ListView和GridView的Adapter
一个自定义Adapter,可以快速实现三个功能: (1)自动缓存处理 好吧,这个功能不是我实现的。我只是照搬鸿洋大大的,我会简单说下,不过还是建议先看下他的原文,再来看我添加的两个功能,传送门 (2)支持item的不同布局 提供一个接口来通过position和该position的数据来设置不同的布局 (3)局部刷新 只刷新指定item的某个子View,避免一直调用notifyDataSetChanged()造成不必要的整体刷新。
listview gridview adapter的使用
分别用simple Adapter和array Adapter实现listview的布局,用simple Adapter实现gridview的布局。
Android中自定义数据适配器Adapter
在Android项目中我们经常会用ListView设置适配器,但是Android提供的现成的适配器功能有限,并且只能对单行进行事件响应,那么我们完全可以根据自己的需求定义自己的适配器,本人最近总结了自定义适配器Adapter的方法,如有不妥的地方还望各位大神不吝赐教,谢谢! 方法一如下: 定义一个MyAdapter类并继承BaseAdapter基类,并在MyAdapter类中定义如下属性:
Android 控件 之 Adapter 基础讲解
Adapter (适配器) 简述 UI 控件都是跟 Adapter (适配器)打交道的,了解并学会使用这个Adapter很重要 Adapter 是用来帮助填充数据的中间桥梁,简单点说就是:将各种数据以合适的形式显示到 view 上,提供给用户看! 关系图解析: Model:通常可以理解为数据,负责执行程序的核心运算与判断逻辑,通过 view 获得用户输入的数据,然后根据从数据库查询相关...
ListView和GridView 自定义Adapter的getView()方法调用问题
Android中的Adapter内的getView方法. 常常在调用次数上有一些问题。 1.getView多次调用 问题描述:getView方法被多次调用。这是android机制中要计算高的时候出现的一些多次调用 解决办法① 直接将该listview的父控件布局改为fill_parent就ok了 解决办法② 有时上面的解决办法不起作用,比如在dialog离加载listView的时候。所
Adapter类型控件之Adapter(数据适配器)
(一)概述 Adapter是作为连接数据跟View之间桥梁的,你可以创建一个View来使用Adapter来对数据直接进行填充; (二)Adapter(适配器)的使用 先来看看他的类结构图: 实际开发中经常用到的那几个Adapter: 用到,不过有点过时了,不推荐使用; 其实,实际开发过程中用的BaseAdapter是非常多的,其他不怎么使用;实际开发过程中Adapter跟
Adapter适配器的自定义
前面讲过ListView的基本建立这里就不多说了,而接下来要讲的适配器的自定义,用自定义adapter的最大好处就是可以优化ListView,从而节省手机内存的资源,来提升运行效率,提高用户的体验度; 自定义Adapter和其他几种适配器的比较: 名称 说明 ArrayAdapter 适用于简单的文字列表 SimpleAdapter 适用于简单的图文混搭列表,但不适于应用较复
ListView的自定义Adapter的性能优化
ListView可以说是安卓开发中经常用到的了。常常想让ListView的每个item中显示的东西多一点,比如说显示图片、文字、时间等等,这就需要我们自定义adapter,重写getView方法。本文主要是总结一下adapter中getView方法的优化。         一般来说getView方法如下写; public View getView(int position,View conve
敲敲自定义Adapter与ViewHolder
   Activity、bean、adapter源码。 package com.example.administrator.learnbaseadapter; //这是主界面源码 import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.widget.ListView;...
自定义的一个Adapter
[quote] 今天实现了一个Adapter,通过自定义的XML文件内容来初始化,感觉还行,分享下,也请各位大虾给点意见~~ :D 代码太多了,故只贴一小部分,请见谅~~ [/quote] [code="java"] public class UIAdapter extends ArrayAdapter [/code] [quote][color=red]反射机制需用到的方法名初始...
安卓ListView自定义Adapter
list.xml <ListView android:id="@+id/listview" android:layout_width="match_parent" android:layout_height="wrap_content" /> item.xml <TextView andro...
自定义adapter问题
碰到一个问题:当我按back键结束当前Activity后,用startActivity再启动该Activity时,onCreate方法里面自定义的adapter不为null,但是在Handler的handleMessage方法里却是null,这是为什么呢?rn[code=java]public class ChatActivity extends Activity implements OnClickListener,OnItemClickListenerrn private static final int UTFMSG = 0; //文字信息rn private static final int PNGMSG = 1; //图片信息rn EditText edt_myContent;rn ListView listView;rn Button btn_send, btn_quit;rn ImageButton imgbtn_expression;rn MyHandler myHandler;rn private SimpleChatAdapter adapter; //聊天记录listview适配器rn private boolean flag = true;rn private DataOutputStream dos;rn private DataInputStream dis;rn private Dialog dialog; //表情对话框rn private static Integer[] imageIds = FaceDate.getFaceIds();//表情数据idrn private int clickId = -1; //聊天list中的item位置rn rn private int from_ip,to_ip; //发送者和接受者的iprn rn @Overridern protected void onCreate(Bundle savedInstanceState) rn // TODO Auto-generated method stubrn super.onCreate(savedInstanceState);rn setContentView(R.layout.activity_chat);rn init();rn if(adapter==null) rn adapter = new SimpleChatAdapter(this);rn Log.i("info", "onCreate中adapter为:"+adapter.toString());rn rn listView.addHeaderView(LayoutInflater.from(this).inflate(R.layout.listview_title, null));rn listView.setAdapter(adapter);rn myHandler = new MyHandler();rn new Thread(new ReceiveThread()).start(); rn //为按钮添加点击事件rn btn_send.setOnClickListener(this);rn btn_quit.setOnClickListener(this);rn imgbtn_expression.setOnClickListener(this);rn //为listView添加点击事件rn listView.setOnItemClickListener(this);rn [/code]rn上面的代码为我的Activity,还有onCreate方法,其中SimpleChatAdapter为自定义适配器rn[code=java] /**rn * 接受服务器端数据的方法rn */rn private void receiveMessage() rn try rn String receiveStr;rn receiveStr = dis.readUTF();rnLog.i("info", "receiveStr的值为:"+receiveStr);rn if(receiveStr == null)rn return;rn if(receiveStr.equals(Constants.SEND_PICTURE)) //指令为图片rn String date = dis.readUTF();rn int datalen = dis.readInt();rn byte[] inputBytes = new byte[datalen];rn int read = 0;rn while (read < datalen) rn int result = dis.read(inputBytes, read, datalen - read);rn if (result == -1)rn break;rn read += result;rn rn Message msg = new Message();rn msg.what = PNGMSG;rn Bundle b = new Bundle();// 存放数据rn b.putString("date", date);rn b.putByteArray("pic", inputBytes);rn msg.setData(b);rn myHandler.sendMessage(msg); // 向Handler发送消息,更新UIrn else //指令不是图片则为文字信息rnLog.i("info", "有信息接受到");rn Message msg = new Message();rn msg.what = UTFMSG;rn Bundle b = new Bundle();// 存放数据rn b.putString("message", receiveStr);rn msg.setData(b);rn myHandler.sendMessage(msg); // 向Handler发送消息,更新UIrn rn catch (IOException e) rn // TODO Auto-generated catch blockrn e.printStackTrace();rn rn rn /**rn * 配合主线程更新UIrn * @author Administratorrn *rn */rn class MyHandler extends Handler rn @Overridern public void handleMessage(Message msg) rn // TODO Auto-generated method stubrn Bundle b = msg.getData();rn switch (msg.what) rn case PNGMSG: //图片信息rn adapter.addMessage(b);rn break;rn case UTFMSG: //表情和文字信息rn Log.i("info", "添加内容");rn Log.i("info", "myHandler为:"+myHandler.toString());rn Log.i("info", "adapter为:"+adapter);rn adapter.addMessage(b.getString("message"));rn break;rn default:rn break;rn rn rn [/code]rn上面为接收数据并用handler转发数据处理的代码。rn[code=java] @Overridern public boolean onKeyDown(int keyCode, KeyEvent event) rn // TODO Auto-generated method stubrn if(keyCode == KeyEvent.KEYCODE_BACK) rn flag = false;rn Log.i("info", "ChatActivity退出");rn adapter = null;rn //adapter.clear();rn listView = null;rn finish();rn rn return super.onKeyDown(keyCode, event);rn [/code]rn上面是back键代码。rn以下是ChatActivity启动退出,再启动接收数据后的LOG和错误rn[code=text]01-23 10:05:43.459: I/info(29247): onCreate中adapter为:com.zhutj.adapter.SimpleChatAdapter@40757810rn01-23 10:05:55.689: W/KeyCharacterMap(29247): Can't open keycharmap filern01-23 10:05:55.689: W/KeyCharacterMap(29247): Error loading keycharmap file '/system/usr/keychars/ft5206_input.kcm.bin'. hw.keyboards.131073.devname='ft5206_input'rn01-23 10:05:55.689: W/KeyCharacterMap(29247): Using default keymap: /system/usr/keychars/qwerty.kcm.binrn01-23 10:05:55.689: I/info(29247): ChatActivity退出rn01-23 10:05:57.069: I/info(29247): onCreate中adapter为:com.zhutj.adapter.SimpleChatAdapter@40769780rn01-23 10:06:15.909: I/info(29247): receiveStr的值为:71 [2013-01-23 10:05:33]splitf050rn01-23 10:06:15.909: I/info(29247): 有信息接受到rn01-23 10:06:15.909: I/info(29247): 添加内容rn01-23 10:06:15.909: I/info(29247): myHandler为:Handler4077f260rn01-23 10:06:15.909: I/info(29247): adapter为:nullrn01-23 10:06:15.909: W/dalvikvm(29247): threadid=1: thread exiting with uncaught exception (group=0x40248560)rn01-23 10:06:15.919: E/AndroidRuntime(29247): FATAL EXCEPTION: mainrn01-23 10:06:15.919: E/AndroidRuntime(29247): java.lang.NullPointerExceptionrn01-23 10:06:15.919: E/AndroidRuntime(29247): at com.zhutj.chatclient.ChatActivity$MyHandler.handleMessage(ChatActivity.java:187)rn01-23 10:06:15.919: E/AndroidRuntime(29247): at android.os.Handler.dispatchMessage(Handler.java:99)rn01-23 10:06:15.919: E/AndroidRuntime(29247): at android.os.Looper.loop(Looper.java:130)rn01-23 10:06:15.919: E/AndroidRuntime(29247): at android.app.ActivityThread.main(ActivityThread.java:3683)[/code]
可重用的自定义adapter
注意:项目是android studio 写的,用eclipse的自己转换一下
adapter
OleDbConnection con = new OleDbConnection(str);rn OleDbCommand com = con.CreateCommand();rn com.CommandText = "select * from shiyan";rn OleDbDataAdapter adapter = new OleDbDataAdapter(com);rn DataSet ds = new DataSet();rn OleDbCommandBuilder cmdbuilder = new OleDbCommandBuilder(adapter);rn //adapter.InsertCommand = cmdbuilder.GetInsertCommand();rn //adapter.DeleteCommand = cmdbuilder.GetDeleteCommand();rn //adapter.UpdateCommand = cmdbuilder.GetUpdateCommand();rn adapter.Fill(ds);rn DataTable dt = ds.Tables["Table"];rn dt.Rows.Add(5, 485,"123");rn adapter.Update(ds);rn问题1 我注释掉的三句InsertCommand、DeleteCommand、UpdateCommand有什么意义 注释掉没影响rn问题2 Table 代表什么意义rn问题3 dt.Rows.Add(5, 485,"123");同样我用其他表这么更新dt.Rows.Add(309, "759", "012", 5, 9, 18, 32, 65, "012", 5, 9, 18, 32, 65); 报错 INSERT INTO 语句的语法错误(adapter.Update(ds);在这一行报错) 这个表的结构没什么问题 为什么rn问题4 数据库里还有其他表 这些表我想放在这里一起更新 adapter.Update(ds); 我应该怎么做
Spinner加载自定义Adapter
Spinner加载自定义Adapter
优化自定义Adapter
在开发中我们经常会用到适配器,当一个项目中有很多地方使用了listView展示数据,而且数据展示都比较复杂的时候这时我们就需要写很多的适配器来展示数据,为了listview性能的提高减少了很多不必要的View的创建,我们会用ViewHolder来优化.由于适配器很多每个适配器中都要写一个ViewHolder类,这样就会显得有很多重复的代码.为了不要写很多的重复代码下面我们就自定义一个适配器 im
自定义adapter 及其性能优化
基本属性和常见问题先来看看一些基本属性和常见问题。 listview 常用属性 cachecolorhint:缓存默认颜色一般给全透明 android:cacheColorHint=”#00ffffff” divder:分隔线 android:divider=”#000000” android:dividerHeight=”1dp” 改变按下的颜色: item的背景改为drawa
自定义adapter类
自定义listview adapter类
spinner自定义adapter
spinner
相关热词 c# 标准差 计算 c#siki第五季 c#入门推荐书 c# 解码海康数据流 c# xml的遍历循环 c# 取 查看源码没有的 c#解决高并发 委托 c#日期转化为字符串 c# 显示问号 c# 字典对象池