回首往事,看一下我们ListView的item,就是一个TextView,实在是太简陋了,今天我们通过inflate打气筒实现复杂布局。
我们实现的布局如图,左边是一个ImageView作为icon,右上是一个TextView作为title,右下是一个TextView作为content,整体使用相对布局。
ps:这只是复杂布局的一个简单示意,举一反三,更复杂的布局由你发挥。
关于布局的实现只提2点,TextView的2个属性,ellipsize设置当文字过长时,省略号的出现位置;singleLine设置单行显示。
android:singleLine="true"
android:ellipsize="end"
开始写核心代码,关键是getView,getView返回一个View,但我们现在有3个View,怎么办?
Duang~inflate打气筒出现了。
View.inflate(getApplicationContext(),R.layout.item,null)
传入3个参数,第一个上下文,一般使用getApplicationContext,第二个资源id,即我们的item,第三个ViewGroup我们设置为空,一般用不上。
ps:LinearLayout、RelativeLayout等都继承自ViewGroup,ViewGroup可以有自己的孩子。
最后附上核心方法代码:
//获取View,作为ListView的一个条目显示
@Override
public View getView(int position, View convertView, ViewGroup viewGroup) {
//布局资源->View对象
//LinearLayout、RelativeLayout等都继承自ViewGroup,ViewGroup可以有自己的孩子。
View view;
//View convertView 历史缓存对象
if (convertView == null){
view = View.inflate(getApplicationContext(),R.layout.item,null);
}else{
view = convertView;
}
return view;
}