Adapter之自定义Adapter

前言:

在我们写程序是经常会用到适配器,当系统自带的适配器不够用时即可自己定义适配器

正文:

因为我们用到的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

猜你喜欢

转载自www.cnblogs.com/z-cg/p/12298622.html