文档章节

ListView 使用问题

CrazyManDF
 CrazyManDF
发布于 2016/06/08 18:54
字数 394
阅读 118
收藏 4

问题1:不能动态获取ViewHolder的TextView控件的getlinecount(),只能返回0?

if(convertView == null){
	convertView = lInflater.inflate(R.layout.listview, null);
	holder = new ViewHolder();
	holder.text2 = (TextView)convertView.findViewById(R.id.TextView02);
	convertView.setTag(holder);
}else{
	holder = (ViewHolder)convertView.getTag();
}

holder.text2.setText(arr2[position]);
int lineCnt = holder.text2.getLineCount();

static class ViewHolder{
    TextView text2;
} 

解决方法:

holder.text2.setText(arr2[position]);
holder.text2.post(new Runnable() {
	@Override
	public void run() {
		int lineCnt = holder.text2.getLineCount();
		// Perform any actions you want based on the line count here.
	}
});

问题2:ListView 的Item布局文件中,有TextView控件,TextView控件的内容行数会变化,所有不能确定大小,导致android:layout_weight="1"或height为match_parent的控件不能显示

解决方法: public View getView(int position, View convertView, ViewGroup parent) 中需要计算根布局控件的高度 // 计算ListView 的Item的高度(系统不能自动确定) adjustMemoHeight(viewHolder);

/**
 * 调整ListView Item 的高度
 *
 * @param viewHolder
 */

private static void adjustMemoHeight(ViewHolder viewHolder) {

	int totalHeight = 0; //统计高度
	// 测量所有包含控件的高度
	viewHolder.tv_time.measure(0,0);
	viewHolder.tv_action.measure(0,0);
	viewHolder.tv_memo.measure(0,0);
	viewHolder.tv_voice.measure(0,0);

	//int memoHeight = viewHolder.tv_memo.getLineHeight() * viewHolder.tv_memo.getLineCount();
	//int padding =viewHolder.tv_memo.getCompoundPaddingTop() + viewHolder.tv_memo.getPaddingBottom();

	totalHeight = viewHolder.tv_time.getMeasuredHeight()
			+ viewHolder.tv_action.getMeasuredHeight()
			+ viewHolder.tv_memo.getMeasuredHeight()
			+ viewHolder.tv_memo.getLineHeight()  // 加一行文本高度,系统测定有些会少算一行(但最后一行只有2,3个字时)
	;
	if(viewHolder.tv_voice.getVisibility() == View.VISIBLE){
		totalHeight += viewHolder.tv_voice.getMeasuredHeight() ;
	}

	//Log.d(TAG, "totalHeight====" + totalHeight
	//		+ ",1="+ viewHolder.tv_time.getMeasuredHeight()
	//		+ ",2="+ viewHolder.tv_action.getMeasuredHeight()
	//		+ ",3="+ viewHolder.tv_memo.getMeasuredHeight()
	//		+"=高度="+memoHeight +"=padding高度="+padding
	//		+ ",4="+ viewHolder.tv_voice.getMeasuredHeight()
	//);

	//viewHolder.rl_item为根布局控件
	ViewGroup.LayoutParams params = viewHolder.rl_item.getLayoutParams();
	params.height = totalHeight;
}

问题3:ListView中嵌套ListView的高度问题

解决方法:计算ListView的子控件高度总和,重新设置ListView 的高度

/** 
 * 设置Listview的高度 
 */  

public void setListViewHeight(ListView listView) {   

    ListAdapter listAdapter = listView.getAdapter();    
    if (listAdapter == null) {   
        return;   
    }   
	
    int totalHeight = 0;   
    for (int i = 0; i < listAdapter.getCount(); i++) {   
        View listItem = listAdapter.getView(i, null, listView);   
        listItem.measure(0, 0);   
        totalHeight += listItem.getMeasuredHeight();   
    }   

    ViewGroup.LayoutParams params = listView.getLayoutParams();   
    params.height = totalHeight + (listView.getDividerHeight() * (listAdapter.getCount() - 1));   
    listView.setLayoutParams(params);  
}

© 著作权归作者所有

共有 人打赏支持
CrazyManDF
粉丝 3
博文 78
码字总数 30987
作品 0
程序员
私信 提问
在ListView中嵌套ListView的事件处理

前天在工作中遇到在ListView中的Item需要用ListView来展现处理后的内容,然后就遇到了一个很头疼的问题,作为Item的ListView没法进行滑动,而且显示也不正常,只是显示几个子Item。不能将子I...

Drealin
2012/08/05
0
49
ScrollView嵌套ListView的问题同样适用于gridview

以下文章转自@安卓泡面 在工作中,曾多次碰到ScrollView嵌套ListView的问题,网上的解决方法有很多种,但是杂而不全。我试过很多种方法,它们各有利弊。 在这里我将会从使用ScrollView嵌套L...

Remix_jx
2015/01/18
0
0
解决ListView拖动时背景黑色的问题

我们知道在Android中ListView是一个比较常用的UI控件,我们在大部分开发中都需要用到它,因此Android为我们提供了ListView的多种实现方法,通过自定义显示布局让显示的内容更加美观,但是我们...

无鸯
2011/09/06
571
0
ScrollView 与ListView共存会存在滚动的问题

ScrollView 与ListView共存会存在滚动的问题,并且ListView只显示一个半Item。 当ListView的高度设定一定的值时,ListView同样地会显示对应的高度的Item。 因此我们可以计算出这个ListView的...

Jonson
2013/01/06
0
1
Android ListView与ScrollView冲突的4种解决方案

问题描述 众所周知ListView与ScrollView都具有滚动能力,对于这样的View控件,当ScrollView与ListView相互嵌套会成为一种问题: 问题一:ScrollView与ListView嵌套导致ListView显示不全面 问题...

IamOkay
2015/02/04
0
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周三乱弹 —— 有一天考拉麻麻拉肚子了

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @瘟神灬念 :分享周汇洋的单曲《Man Srae(曼斯拉之舞)》:美滋滋。。。。 手机党少年们想听歌,请使劲儿戳(这里) 我听了一下 赶紧关了, ...

小小编辑
40分钟前
12
3
oh-my-zsh 自定义

GitHub 地址 基于 oh-my-zsh 的自定义配置,增加了一些个人常用插件与皮肤。 采用的是 git submodule 来维护,包括 oh-my-zsh,之所以这么搞,主要是手头有多台 linux 需要维护, 每台机器、...

郁也风
今天
6
0
Docker安装踩坑:E_FAIL 0x80004005的解决

参考 菜鸟教程--Windows Docker 安装 http://www.runoob.com/docker/windows-docker-install.html 官方文档-Install Docker Toolbox on Windows https://docs.docker.com/toolbox/toolbox_in......

karma123
今天
6
0
js垃圾回收机制和引起内存泄漏的操作

JS的垃圾回收机制了解吗? Js具有自动垃圾回收机制。垃圾收集器会按照固定的时间间隔周期性的执行。 JS中最常见的垃圾回收方式是标记清除。 工作原理:是当变量进入环境时,将这个变量标记为“...

Jack088
昨天
18
0
大数据教程(10.1)倒排索引建立

前面博主介绍了sql中join功能的大数据实现,本节将继续为小伙伴们分享倒排索引的建立。 一、需求 在很多项目中,我们需要对我们的文档建立索引(如:论坛帖子);我们需要记录某个词在各个文...

em_aaron
昨天
27
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部