BaseAdapter 适配器

BaseAdapter是一个抽象类,因此要写自已的适配器,段继承此类,并实现以下方法:
@Override
public int getCount() {
return 0;
}
@Override public Object getItem(int position) {
return null;
}
@Override public long getItemId(int position) {
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
return null;
}

Demo:

描述:用ListView,BaseAdapter实现多个用户信息展示,根据用户性不同显示不同的性别图片(如下图)

代码如下:

主界面布局文件:activity_main
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.zy.baseadapter.MainActivity"> <ListView
android:id="@+id/user_list_view"
android:layout_width="match_parent"
android:layout_height="match_parent">
</ListView> </RelativeLayout>
//item_user.xml 布局文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent"> <ImageView
android:scaleType="centerInside"
android:id="@+id/iv_user_img"
android:layout_width="60dp"
android:layout_height="60dp" />
<TextView
android:id="@+id/tv_user_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content" /> <TextView
android:id="@+id/tv_user_age"
android:layout_width="wrap_content"
android:layout_height="wrap_content" /> <TextView
android:id="@+id/tv_user_sex"
android:layout_width="wrap_content"
android:layout_height="wrap_content" /> </LinearLayout>

图片文件

public class MainActivity extends AppCompatActivity {

    List<UserInfo> userInfos = new ArrayList<>();

    @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
     //用户数据
for (int i = 0;i < 30;i++){
UserInfo userInfo = new UserInfo();
userInfo.userName = "张" + i;
userInfo.userAge = i;
userInfo.userSex = i%2 == 0?"男":"女";
userInfos.add(userInfo);
}
     //listView
ListView listView = (ListView) findViewById(R.id.user_list_view);
     //实例化一个适配器
UserInfoListAdapter userInfoListAdapter = new UserInfoListAdapter();
listView.setAdapter(userInfoListAdapter);
}
// 点击屏幕跳转到第二个Activity (点击事件)
// @Override
// public boolean onTouchEvent(MotionEvent event) {
// int action = event.getAction();
// if(action == MotionEvent.ACTION_DOWN){
// Intent intent = new Intent(this,MenuActiviy.class);
// startActivity(intent);
// }
// return false;
// } class UserInfoListAdapter extends BaseAdapter{ @Override
public int getCount() {
return userInfos.size();
} @Override
public Object getItem(int position) {
return userInfos.get(position);
} @Override
public long getItemId(int position) {
return position;
} @Override
public View getView(int position, View convertView, ViewGroup parent) {
View itemRootView = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_user,null); TextView userNameView = (TextView) itemRootView.findViewById(R.id.tv_user_name);
userNameView.setText(userInfos.get(position).userName); TextView userAgeView = (TextView) itemRootView.findViewById(R.id.tv_user_age);
userAgeView.setText(userInfos.get(position).userAge + ""); TextView userSexView = (TextView) itemRootView.findViewById(R.id.tv_user_sex);
userSexView.setText(userInfos.get(position).userSex); ImageView imageView = (ImageView) itemRootView.findViewById(R.id.iv_user_img);
if(userInfos.get(position).userSex.equals("男")){
imageView.setBackgroundResource(R.drawable.man);
}else if(userInfos.get(position).userSex.equals("女")){
imageView.setBackgroundResource(R.drawable.woman);
}
return itemRootView;
}
}
class UserInfo{
private String userName;
private int userAge;
private String userSex;
}
}

Android BaseAdapter用法的更多相关文章

  1. Android Meun 用法

    Android Meun 用法 点击菜单实体键弹出菜单:如下图 main_activity.xml <?xml version="1.0" encoding="ut ...

  2. Android ViewPager 用法

    Android ViewPager 用法 场景:一般第一次打开应用程序时,程序会有一个提示页来给展现应用程序都有哪些功能:或者程序更新时,又更新哪些新特性,都可以使用ViewPager Demo 描述 ...

  3. Android Intent 用法全面总结

    [代码全屏查看]-Android Intent 用法全面总结 // [1].[代码] 调用拨号程序 跳至 [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] / ...

  4. Android GLSurfaceView用法详解(二)

    输入如何处理       若是开发一个交互型的应用(如游戏),通常需要子类化 GLSurfaceView,由此可以获取输入事件.下面有个例子: java代码: package eoe.ClearTes ...

  5. Android ScrollView用法

    Android ScrollView用法 今天试着使用了一下Android的滚轮,以下是一个小小的测试,读取测试文件,主要是使用scrollTo函数和getScrollY(),程序点击BUTTON按钮 ...

  6. Android Service用法知识点的讲解

    Android Service 学习Service相关知识点: android service 的基础知识,生命周期,service分类,运行地点(本地服务,远程服务),运行类型(前台服务,后台服务) ...

  7. Android Fragment用法知识点的讲解

    Android Fragment用法的讲解 碎片,它的出现是为了更好展示UI的设计,让程序更加得到充分的展示.Fragment的出现,如微信的额主界面包含多个Fragment,使得微信功能更加简洁明了 ...

  8. Android spannableStringBuilder用法整理

    Android spannableStringBuilder用法整理 分类: Android开发2013-11-29 10:58 5009人阅读 评论(0) 收藏 举报 Androidspannabl ...

  9. Android Fragment用法详解(2)--动态添加Fragment

    在上一篇文章<Android Fragment用法详解(1)--静态使用Fragment>我们讲解了Fragment的最简单的用法.这次我们来说一说Fragment复杂一丢丢的用法.在代码 ...

随机推荐

  1. flash中htmlText样式

    赋值htmlText时,htmlText中指定了样式的按指定样式显示,没有指定的按该文本的默认样式显示. PS:flash软件拖出来的文本,在赋值htmlText的时候该文本原有样式会失效,而new出 ...

  2. Hibernate 注解的用法以及说明(二)

    注解映射必须满足两大条件:Hibernate3.2以上版本和JSEE 5. @Entity 类注释,所有要持久化的类都要有@Entity   public class Org  implements ...

  3. JVM内存模型和性能优化

    JVM内存模型优点 内置基于内存的并发模型:      多线程机制 同步锁Synchronization 大量线程安全型库包支持 基于内存的并发机制,粒度灵活控制,灵活度高于数据库锁. 多核并行计算模 ...

  4. Python 9X9乘法口诀表

    #乘法口诀 for i in range(1,10): for j in range(1,i+1): print ( j,'*',i,'=',j*i,'',' ',end='') print(end= ...

  5. ASP.NET中的Session怎么正确使用

    Session对象用于存储从一个用户开始访问某个特定的aspx的页面起,到用户离开为止,特定的用户会话所需要的信息.用户在应用程序的页面切换时,Session对象的变量不会被清除. 对于一个Web应用 ...

  6. 关于unity3D的学习感想

    在老师布置团队项目后组长确定项目是做游戏是,我才接触的Unity3D游戏引擎. 因为一开始我没有接触过这类软件,更没有用过.所以作为一个新手,做好的办 法实在网上找教程.网上说Unity3D是由Uni ...

  7. Winform主窗体设计

    主窗体顶部为菜单按钮,子窗体内嵌入Panel显示 界面如下: 第二步,主窗体离不开的几个方法 1,点击菜单功能,加载子窗体 private void btnOpenForm_Click(object ...

  8. Docker-2:network containers

    docker run -d -P --name web training/webapp python app.py # -name means give the to-be-run container ...

  9. SAP第一轮面试总结

    1. 开始是一套面试题,可以选JAVA或C/C++两个语言的英文题.基础语法题,以指针为主. 2. 英文介绍,自由发挥.问了以下几个问题: 离职的愿意,未来五年的计划,介不介意使用ABAP langu ...

  10. 大前端学习笔记整理【六】this关键字详解

    前言 在上一篇博客里我总结了下辨认this指向的四种方式,但是有师兄抛出一个问题来,我发现那些this的指向并不能说明更复杂的情况,先看下这段代码 var a = { name: 'a', getNa ...