前言:
在我们写程序是经常会用到适配器,当系统自带的适配器不够用时即可自己定义适配器
正文:
因为我们用到的ListView视图所以我们先初始化ListView,在我们的主活动中添加如下代码
1 <ListView 2 android:id="@+id/lv" 3 android:layout_width="wrap_content" 4 android:layout_height="wrap_content" 5 />
下面直接来Java代码
1 package com.example.administrator.testmyadapter; 2 3 import android.support.v7.app.AppCompatActivity; 4 import android.os.Bundle; 5 import android.view.LayoutInflater; 6 import android.view.View; 7 import android.view.ViewGroup; 8 import android.widget.BaseAdapter; 9 import android.widget.ListView; 10 import android.widget.TextView; 11 12 import java.util.ArrayList; 13 import java.util.List; 14 15 public class MainActivity extends AppCompatActivity { 16 private ListView lv; 17 private List<String>list; 18 private MyAdapter myAdapter; 19 @Override 20 protected void onCreate(Bundle savedInstanceState) { 21 super.onCreate(savedInstanceState); 22 setContentView(R.layout.activity_main); 23 lv=(ListView)findViewById(R.id.lv); 24 list=new ArrayList<String>(); 25 for (int i=0;i<=40;i++){ 26 list.add("数据"+i); 27 } 28 myAdapter=new MyAdapter(); 29 lv.setAdapter(myAdapter); 30 } 31 class MyAdapter extends BaseAdapter{ 32 @Override 33 //item的数量 34 public int getCount() { 35 return list.size(); 36 } 37 38 @Override 39 //item对象 40 public Object getItem(int position) { 41 return list.get(position); 42 } 43 44 @Override 45 //item对象的id 46 public long getItemId(int position) { 47 return position; 48 } 49 50 @Override 51 //获取每一个item的view视图 52 public View getView(int position, View convertView, ViewGroup parent) { 53 //获取布局映射器对象 54 LayoutInflater inflater=LayoutInflater.from(MainActivity.this); 55 //将XML文件映射为view对象 56 View view=inflater.inflate(R.layout.my_item_activity,null); 57 //通过view对象找到控件 58 TextView textView=(TextView)view.findViewById(R.id.textview); 59 //赋值 60 textView.setText(list.get(position)); 61 return view; 62 } 63 } 64 }
步骤二:
初始化ListView:黄色部分都是初始化ListView
步骤三:
初始化数据源:浅青色都是初始化数据源,常规操作不需要讲解
步骤四:
自定义适配器:1.添加名为MyAdapter的内部类 并且要继承BaseAdapter重写四个方法getCount(获取item数量)getItem(获取item对象)
getItemId(获取Item对象id)getView(获取每一个item的view视图)
2.通过LayoutInflater调用from方法获取布局映射器对象
3.通过布局映射器对象调用inflate方法,使将XML文件映射为view对象
4.通过view对象找到控件
5.对找到的控件对象调用setText进行赋值
6.返回view