文档章节

ListView 使用问题

CrazyManDF
 CrazyManDF
发布于 2016/06/08 18:54
字数 394
阅读 107
收藏 4
点赞 0
评论 0

问题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
博文 75
码字总数 28526
作品 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
401
0
Android ListView 使用

一.ListView点击变色 1.selector_text.xml listview——item中textview字体颜色改变 2.selector.xml listview——点击背景颜色改变 3.xml中设置 4.代码中设置 5.备注 android:state_selected...

SRain215
2016/03/16
144
0
由ListView改变Item背景问题引出的对自定义Adapter的反思

由ListView改变Item背景问题引出的对自定义Adapter的反思 本人新手,前两天做关于ListView的一个信息栏,想要做出一种点击选中改变背景图片的效果,遇到了不少麻烦,在网上也没有找到一个完整...

华宰
2011/09/20
1K
1
android-listview拖动时背景变黑的问题

Android为我们提供了ListView 的多种实现方法,通过自定义显示布局让显示的内容更加美观,但是我们会发现这样一个问题,当我们操作ListView的时候,如果不使用手机上下按键的时候,直接用触摸...

长平狐
2012/08/28
113
0
Android ListView与ScrollView冲突的4种解决方案

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

IamOkay
2015/02/04
0
0
ListView嵌套ListView缓存失效问题

ListView嵌套ListView缓存失效问题 Android中在写列表的时候,相信很多时候,我们都需要进行ListView嵌套ListView编程。比如说:帖子+评论页面的编写。然而这种模型是会出现被嵌套ListView缓...

精通吹水
2016/03/20
120
0
Android控件RecyclerView和ListView的异同

在我的一篇介绍Android新控件RecyclerView的博客( Android L新控件RecyclerView简介 )中,一个读者留言说RecyclerView跟ListView之间好像没有什么不同,我觉得这是一个好问题,应该明确地区...

小克898
2016/08/16
27
0
Android仿今日头条详情页实现

## 源码地址: Android仿今日头条详情页实现 github源码地址 动态图 最近项目有个需求,需要实现一个和今日头条新闻详情页一样的体验。上部分是webview来展示新闻内容,下半部分是listview来...

ice_Anson
2017/02/06
1K
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

切分log日志

新建logback.xml放到resource里面 <?xml version="1.0" encoding="utf-8"?><configuration> <appender name="consoleLog" class="ch.qos.logback.core.ConsoleAppender"> <......

talen
5分钟前
0
0
spring @Resource 和 @Autowired 的使用区别

这两个 注解 @Resource 和 @Autowired , 常识都知道 @Resource 是 JAVAEE 自带的,@Autowired 是 spring 的自定义注解。 一般情况下, 使用 bean的时候, 这两个注解 随便使用一个即可。 但...

之渊
10分钟前
0
0
崛起于Springboot2.X之集成MongoDB使用Repository增删改查(26)

1、pom依赖 <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.7</version></dependency><dependency> <groupId>log4j</......

木九天
12分钟前
1
0
springboot集成elasticsearch客户端问题记录

1背景说明 服务端ES版本为5.5.2,springboot版本为1.5.6。 工程中添加如下依赖 2问题记录 2.1 NetworkPlugin类找不到 报错java.lang.ClassNotFoundException: org.elasticsearch.plugins.Net...

zjg23
12分钟前
1
0
快速构建ceph可视化监控系统

前言 ceph的可视化方案很多,本篇介绍的是比较简单的一种方式,并且对包都进行了二次封装,所以能够在极短的时间内构建出一个可视化的监控系统 本系统组件如下: ceph-jewel版本 ceph_expor...

万建宁
12分钟前
0
0
Java构造器使用注意

public class 父类A {int age = 10;protected void say() {System.out.println("父类A");}public 父类A() {override();}public void override() {Syst...

咸鱼AI
12分钟前
0
0
TensorFlow 线性分类

构造直线 z = 2 * x - 3 * y + 4 x0*w0+x1*w1+b=0 x1=-x0* w0/w1-b/w1 斜率 k= -w0/w1 截距 -b/w1 随机生成数据,加入一定的偏差,用直线将二维平面分为两部分 使用线性模型拟合参数 损失函数...

阿豪boy
15分钟前
0
0
翻译冒泡排序测试

翻译一个冒泡排序: var a = [1,3,2,4,6,5];var f = 0;var n = a.length ;for( var i =1; i<= n; i++) { for( var j = n-1 ; j >= i; j --) { if(a[j] < a[j+1]) { ......

钟元OSS
17分钟前
0
0
maven父、子级版本号同时修改

命令: mvn versions:set -DnewVersion=0.0.2-SNAPSHOT

沉默的懒猫
18分钟前
0
0
Spring boot中的异常处理之注解响应

Controller层 return patientRepository.findById(id) .orElseThrow(() -> new NotFoundException(String.format("Patient %d not found", id))); Exception类 @ResponseS......

亚林瓜子
19分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部