Android入门开发--微博列表模拟
来源:互联网 发布:q宠大乐斗代玩软件 编辑:程序博客网 时间:2024/05/16 19:20
需要掌握的知识点:1.ListView控件的使用;
2.理解Adapter 的作用并掌握自定义FruitAdapter 的使用方式。
首先定义一个实体类用于存放对象,使其作为ListView适配器的适配类型。
具体方法如下:
publicclass Infor {
private Stringname;
privateintimageId;
public Infor (String name,int imageId) {
super();
this.name = name;
this.imageId = imageId;
}
public String getName() {
returnname;
}
publicvoid setName(String name) {
this.name = name;
}
publicint getImageId() {
returnimageId;
}
publicvoid setImageId(int imageId) {
this.imageId = imageId;
}
}
然后我们需要建立一个自定义布局Infor_item.xml(ListView的子项布局);
具体实现如下:
<?xmlversion="1.0"encoding="utf-8"?>
<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<ImageView
android:id="@+id/ivInfor"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/1_pic"/>
<TextView
android:id="@+id/tvInfor"
android:layout_gravity="center"
android:layout_margin="10dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="今天的天气真好"/> //此处可以引用String.xml中的字段。
</LinearLayout>
以上的布局是为ListView的一个子项,接下来我们就要创建一个自定义的适配器InforAdapter,这个适配器继承自ArrayAdapter,重写构造方法和getView方法
具体实现方法如下:
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import com.example.ui_listview01.R;
import com.example.ui_listview01.model.Fruit;
publicclass InforAdapterextendsArrayAdapter {
privateintresourceId;
public InforAdapter(Context context,int textViewResourceId) {
super(context, textViewResourceId);
resourceId = textViewResourceId;
}
//每个子项被滚动到屏幕内的时候会被调用
public ViewgetView(int position, View convertView, ViewGroup parent) {
Infor infor = (Infor) getItem(position);
View view = null;
ViewHolder viewHolder; //当convertView为空的时候,创建一个ViewHolder对象,并将控件的实例都存放在ViewHolder里,然后调用View的setTag()方法,将ViewHolder对象存储在View中。
if (convertView ==null) {
view = LayoutInflater.from(getContext()).inflate(resourceId,null);
viewHolder = new ViewHolder();
viewHolder.ivFruit = (ImageView) view.findViewById(R.id.ivFruit);
viewHolder.tvFruit = (TextView) view.findViewById(R.id.tvFruit);
view.setTag(viewHolder);
} else {
//当convertView不为空的时候则调用View的getTag()方法,把ViewHolder重新取出。
view = convertView; // getView()方法中的convertView参数将之前加载好的布局进行缓存,以便之后重用
viewHolder = (ViewHolder) convertView.getTag();
}
viewHolder.ivFruit.setImageResource(fruit.getImageId());
viewHolder.tvFruit.setText(fruit.getName());
return view;
}
//添加一个内部类ViewHolder,用于对控件的实例进行缓存。
class ViewHolder {
ImageView ivInfor;
TextView tvInfor;
}
}
通过上述设置,所有控件的实例都缓存在了ViewHolder里,就没有必要每次都通过findViewById()方法来获取控件实例了。
本次android课程实现微博列表页面结束了,谢谢浏览。
- Android入门开发--微博列表模拟
- android开发步步为营之5:ExpandableListView模拟QQ好友列表
- Android开发入门之采用ListView实现数据列表显示
- Android入门开发报错通用自查列表
- Android开发学习列表
- Android开发资源列表
- android 列表开发 ListView
- Android 模拟手机GPS入门
- Android开发从入门到放弃(8)使用ListView显示一个简单的列表
- BlackBerry Java开发入门材料列表
- ActiveReport开发入门-列表的交互性
- 【Android】新浪微博开放平台V2开发入门基础
- Android开发之列表控件
- Android 蓝牙开发 UUID列表
- android开发-获取wifi列表
- android开发-获取wifi列表
- Android开发:Spinner下拉列表
- android iBeacon开发模拟实例
- Android 结合实例学会AsyncTask的用法
- IOS常用库整理
- 【媒体应用:Android平台Vitamio播放器探索之路系列】之一:Vitamio开篇
- 接口实现多态
- C++面试题
- Android入门开发--微博列表模拟
- 开启PHP的error_log
- the file path datafile/oradata/sysaux01.dbf is invalid.please check the permissions.
- Objective-C协议和委托
- C语言快速排序
- 走台阶问题
- 图像分块并保存matlab实现
- 纪实整理啊!赞!
- Linux服务器上tomcat为java分配的内存不足:PermGen space