GridView中第一个item不显示,以及显示方式不正确的调整方式。

项目中在GridView的使用过程中遇到不少问题,在此记录一下,给自己提个醒:

Gridview第一个item不显示的问题。

在GridView中,我们在getView中可以映射每个item的布局,通过inflate的方式。这里参考一下大神的分析,具体在这里有详细的描述三种不同inflate方法的描述:

http://blog.csdn.net/lmj623565791/article/details/38171465。

在此建议使用第二种构造函数来构建inflate,至于为什么,第一种inflate(layoutId, null )是无法获取到布局文件的,那就无法通过getLayoutParams()和setLayoutParams()方法来进行单个item大小设置的。

有的朋友会问,可以用new GridViewLayoutParams()来操作,我对这个理解还不是很明白,但是我发现new出来的东西会出现莫名其妙的问题,所以个人自己建议是通过get和set方法来操作。

第一个item不显示,主要是我们在getView中通过get和set方法进行了动态的item大小控制,那么在这里我们的控制代码应该怎么放置呢?

@Override
	public View getView(int position, View convertView, ViewGroup parent) {
		// TODO Auto-generated method stub
		Log.i("CustomGridViewAdapter", "getView be called");
		ViewHold holder;
		if (convertView == null || convertView.getTag() == null) {
			convertView = mInflater.inflate(R.layout.image_text_button, parent,false);
			holder = new ViewHold();
			IniInflaterView(holder, convertView);
			
			convertView.setTag(holder);
		} else {
			holder = (ViewHold) convertView.getTag();
		}
		<pre name="code" class="html">int mwidth = mPullToRefreshGridView.getWidth() / 7;
		// Log.e("item宽度", mwidth + "");
		LayoutParams lp = (LayoutParams) convertView.getLayoutParams();
		lp.height = mwidth * 14 / 9;
		lp.width = mwidth;
		convertView.setLayoutParams(lp);

IniInflaterViewDoSomething(holder, arrayList.getBookInfo().get(position));return convertView;}

 
一般习惯性会把 

int mwidth = mPullToRefreshGridView.getWidth() / 7;
		// Log.e("item宽度", mwidth + "");
		LayoutParams lp = (LayoutParams) convertView.getLayoutParams();
		lp.height = mwidth * 14 / 9;
		lp.width = mwidth;
		convertView.setLayoutParams(lp);
这几行代码放到if里面去操作,但是当构造完成是,已经存在了convertVIew的时候进的是else那就会影响到布局显示了。


参考几位前辈写的bolg:

http://blog.csdn.net/X_i_a_o_H_a_i/article/details/41822505





  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
GridView 在网页显示,可能是由于以下原因之一: 1. 数据源为空:如果 GridView 绑定的数据源为空,那么 GridView 就不会显示任何数据。在这种情况下,可以通过在 GridView 控件设置 EmptyDataText 属性来显示一个提示消息,告诉用户当前没有数据可供显示。 2. 样式设置不正确GridView 的样式设置不正确也可能导致它在网页显示。在这种情况下,你可以检查一下 GridView 的 CSS 样式以及它所包含的 HTML 元素,确保它们能够正确显示在网页。 3. 数据绑定错误:如果数据绑定错误,可能会导致 GridView 在网页显示。在这种情况下,你可以检查一下数据绑定的代码,确保它们能够正确地绑定数据到 GridView 。 4. 数据列设置不正确GridView 的数据列设置不正确也可能导致它在网页显示。在这种情况下,你可以检查一下 GridView 的数据列设置,确保它们与数据源的字段名称和数据类型相匹配。 5. 控件可见性设置不正确:如果 GridView 的 Visible 属性设置为 false,那么它就不会在网页显示。在这种情况下,你可以检查一下 Visible 属性的设置,确保它被正确地设置为 true。 如果你排除了以上几个问题,但 GridView 仍然不显示,那么可能是由于其他未知原因导致。你可以检查一下浏览器的开发者工具,查看是否有任何错误消息或警告。如果仍然无法解决问题,你可以尝试重新创建一个新的 GridView 控件,并重新进行数据绑定。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值