Android BaseAdapter用法

BaseAdapter 适配器

BaseAdapter是一个抽象类,因此要写自已的适配器,段继承此类,并实现以下方法:
@Overridepublic int getCount() {
    return 0;
}
@Override

public Object getItem(int position) {
   return null;
}
@Override

public long getItemId(int position) {
   return 0;
}
@Overridepublic 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;
    }
}
时间: 2024-08-06 16:06:45

Android BaseAdapter用法的相关文章

【转】BaseAdapter用法

转自:http://blog.csdn.net/wangjia55/article/details/7430759 大家好,今天给大家讲解一下Android BaseAdapter(基础适配器)的用法,适配器的作用主要是用来给诸如(Spinner.ListView.GridView)来填充数据的.而(Spinner.ListView.GridView)都有自己的适配器(记起来麻烦).但是BaseAdapter(一招鲜)对他们来说却是通用的,为什么这么说呢,首先我们看一下API文档: 我们看到An

Android Bitmap 用法总结

android Bitmap用法总结 Normal 0 7.8 磅 0 2 false false false MicrosoftInternetExplorer4 1.Drawable → Bitmap public static Bitmap drawableToBitmap(Drawable drawable) { Bitmap bitmap = Bitmap .createBitmap( drawable.getIntrinsicWidth(), drawable.getIntrinsi

android Bitmap用法总结

Bitmap用法总结1.Drawable → Bitmappublic static Bitmap drawableToBitmap(Drawable drawable) {Bitmap bitmap = Bitmap.createBitmap(drawable.getIntrinsicWidth(),drawable.getIntrinsicHeight(),drawable.getOpacity() != PixelFormat.OPAQUE ? Bitmap.Config.ARGB_888

Android ViewPager 用法

Android ViewPager 用法 场景:一般第一次打开应用程序时,程序会有一个提示页来给展现应用程序都有哪些功能:或者程序更新时,又更新哪些新特性,都可以使用ViewPager Demo 描述:实现三个界面的相互切换,页面颜色分别为红,绿,蓝 activity_main: 主界面只添ViewPager这一个控件 android:overScrollMode="never" 作用是当页面已经滑动到最左边或最右时,去掉阴影 <?xml version="1.0&qu

Android HttpClient 用法以及乱码解决

一.Post提交 并可以实现多文件上传 // 创建DefaultHttpClient对象 HttpClient httpclient = new DefaultHttpClient(); // 创建一个HttpGet对象 HttpPost post = new HttpPost(realUrl); MultipartEntity entity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE); if (params != nu

Android Timer用法

Android考虑到线程安全问题,不允许在线程中执行UI线程,在Android中,有一个类:android.os.Handler,这个可以实现各处线程间的消息传递.先看段代码,这个实例化了一个Handler,Handler可以通过Message在多个线程通讯,这里做的是定时recLen加1,然后以一定的格式,显示到recTime上(UI线程上的操作).  1 final Handler handler = new Handler(){   2     public void handleMess

Android configChanges用法

1.    在manifest文件中使用activity的默认属性,横屏竖屏时,惠反复调用onDestory和onCreate  造成不必要的开销.Android默认如此应该是为了适配不同的xml布局文件,重新初始化资源,显示效果会好一些: 2. manifest文件中配置activity的属性: android:configChanges="orientation|screenSize" 在activity中将会回调函数: public void onConfigurationCha

Android getSystemService用法实例总结

本文实例分析了Android getSystemService用法.分享给大家供大家参考,具体如下: 1. 说明 android的后台运行在很多service,它们在系统启动时被SystemServer开启,支持系统的正常工作,比如MountService监听是否有SD卡安装及移除,ClipboardService提供剪切板功能,PackageManagerService提供软件包的安装移除及查看等等,应用程序可以通过系统提供的Manager接口来访问这些Service提供的数据,以下将说明他们

蛋疼的Android BaseAdapter

1 package com.moniter.helperclasses; 2 3 import java.util.List; 4 5 import android.content.Context; 6 import android.view.LayoutInflater; 7 import android.view.View; 8 import android.view.ViewGroup; 9 import android.widget.BaseAdapter; 10 import andr