1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > android listview 行高度自适应 Android ListView 长度自适应item的内容 计算listview的高度...

android listview 行高度自适应 Android ListView 长度自适应item的内容 计算listview的高度...

时间:2020-07-23 02:51:36

相关推荐

android listview 行高度自适应 Android ListView 长度自适应item的内容 计算listview的高度...

Android 原生的ListView的长度是不会根据里面内容项的多少而改变你之前定义的长度的(wrap_content或者是fill_parent)

但是有些时候就想, 我里面有一个Item, 它就显示一个item. 但是如果里面有2个Item, List的长度就增加一倍, 显示两个, OK这篇博文就是要说明一下如何实现, 之所以写, 是为了记录一下, 难免自己以后就忘记了.

OK, 首先,自己定义一个LIstView, 继承字ListView

packagecom.mon.view;

importandroid.content.Context;

importandroid.util.AttributeSet;

importandroid.widget.ListView;

/**

*计算listview的高度加载到scrollview中

*

*/

publicclassMyDetailsListViewextendsListView

{

publicMyDetailsListView(Contextcontext)

{

super(context);

}

publicMyDetailsListView(Contextcontext,AttributeSetattrs)

{

super(context,attrs);

}

publicMyDetailsListView(Contextcontext,AttributeSetattrs,intdefStyle)

{

super(context,attrs,defStyle);

}

@Override

protectedvoidonMeasure(intwidthMeasureSpec,intheightMeasureSpec)

{

//TODOAuto-generatedmethodstub

intexpandSpec=MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE>>2,

MeasureSpec.AT_MOST);

super.onMeasure(widthMeasureSpec,expandSpec);

}

}

OK, 这样就可以在XML中用这个自定义的LIstView了, 来替换掉系统的LIstView

android:orientation="vertical"

android:id="@+id/layout_added_pet_profile"

android:background="@drawable/layout_white_background"

android:layout_width="fill_parent"

android:layout_height="match_parent"

android:layout_marginTop="5.0dip">

android:id="@+id/added_pet_list"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:scrollbars="none"

android:layout_marginLeft="5dip"

android:layout_marginRight="5dip"

/>

OK, 虽然我们的ListView是wrap_content, 但是它已经可以根据里面内容的多少, 自己计算ListView的高度了,来适应scrollview.

如何添加项目到ListView中呢, 就要用到adapter了, 接下来定义一个adapter.

publicclassAddedPetProfileItemAdapterextendsBaseAdapter

{

privateContextmContext;

privateListlist;

publicAddedPetProfileItemAdapter()

{

}

publicAddedPetProfileItemAdapter(Contextcontext,Listlist)

{

this.mContext=context;

this.list=list;

}

@Override

publicintgetCount()

{

//TODOAuto-generatedmethodstub

returnlist.size();

}

@Override

publicObjectgetItem(intposition)

{

//TODOAuto-generatedmethodstub

returnposition;

}

@Override

publiclonggetItemId(intposition)

{

//TODOAuto-generatedmethodstub

returnposition;

}

@SuppressLint("NewApi")

@Override

publicViewgetView(intposition,Viewview,ViewGroupparent)

{

//TODOAuto-generatedmethodstub

finalHolderhold;

if(view==null)

{

hold=newHolder();

view=View.inflate(mContext,R.layout.list_added_pet_profile_item,

null);

hold.added_pet_avatar=(ImageView)view

.findViewById(R.id.added_pet_avatar);

.

.//等等一下东西

.

view.setTag(hold);

}

else

{

hold=(Holder)view.getTag();

}

//这里去设置hold里面的项目

returnview;

}

staticclassHolder

{

ImageViewadded_pet_avatar;//添加了的宠物的照片

EmojiconTextViewadded_pet_name;//添加了的宠物的名字

LinearLayoutlayoutadded_pet_gender_species;//添加了的宠物的性别的背景

ImageViewadded_pet_gender;//性别图片

TextViewadded_pet_species;//种类名字

TextViewadded_pet_age;//年龄

RelativeLayoutlayout_added_pet_profile;

}

}

然后activity中去调用这个adapter 就可以了

AddedPetProfileItemAdapteraddedPetAdapter=newAddedPetProfileItemAdapter(mContext,petPiclist);

MyDetailsListViewadded_pet_listView=(MyDetailsListView)findViewById(R.id.added_pet_list);

added_pet_listView.setAdapter(addedPetAdapter);

OK, 这里就完了,

文章写的很急, 很烂, 希望看的童鞋们谅解, 主要也是用来记录的, 以后看到直接就拿来用了, 见谅.....

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。