休言女子非英物,夜夜龙泉壁上鸣。这篇文章主要讲述Android适配器的使用(ArrayAdapterSimpleAdapterBaseAdapter)相关的知识,希望能为你提供帮助。
目录
- 数组适配器ArrayAdapter
- 简单适配器SimpleAdapter
- 自定义适配器BaseAdapter
数组适配器ArrayAdapter
简介:
ArrayAdapter是android的列表适配器,用于ListView这类型的控件与数据之间适配用的。
默认的ArrayAdapter期望接受的样式文件里只含有一个textview
使用方法:
实现如下效果:
文章图片
XML布局:
< LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> < ListView android:id="@+id/li" android:layout_width="match_parent" android:layout_height="wrap_content"> < /ListView> < /LinearLayout>
java代码:
package com.contentprovide.liuliu.demo_01; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.ListView; import android.widget.TextView; import android.widget.Toast; public class MainActivity extends AppCompatActivity { ArrayAdapter< String> arrayAdapter; ListView li; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); li = (ListView) findViewById(R.id.li); arrayAdapter = new ArrayAdapter(MainActivity.this,R.layout.support_simple_spinner_dropdown_item); //给数组适配器添加内容 arrayAdapter.add("1"); arrayAdapter.add("2"); arrayAdapter.add("3"); arrayAdapter.add("4"); //把数组适配器添加到Listview的对象中 li.setAdapter(arrayAdapter); //给ListView的对象添加点击事件:点击每个TextView选项,弹出该文本框上对应的内容 li.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView< ?> adapterView, View view, int i, long l) { TextView t = (TextView) view; String s = t.getText().toString(); Toast.makeText(getApplicationContext(),s,Toast.LENGTH_SHORT).show(); } }); } }
简单适配器SimpleAdapter
自定义适配器BaseAdapter
简介:
拓展BaseAdapter来实现Adapter可以取得对Adapter的最大控制权:程序要创建多少个列表项,每个列表项的组件都由开发者来决定
三个实现的地方:MainActivity.java、Main_activity.xml、layout.xml
MainActivity.java:java代码,实现逻辑步骤,通过适配器把内容映射到ListView中
Main_activity.xml:主布局文件,主要放要显示的内容,ListView控件也是位于这里
layout.xml:自定义布局文件,主要是用来布局ListView中每个列表项中布局,体现出自定义适配器的灵活性
layout.xml布局文件:
< ?xml version="1.0" encoding="utf-8"?> < LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal"> < ImageView android:id="@+id/ima" android:layout_width="100dp" android:layout_height="100dp" /> < TextView android:id="@+id/te1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margin="30px" /> < TextView android:id="@+id/te2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margin="30px" /> < /LinearLayout>
【Android适配器的使用(ArrayAdapterSimpleAdapterBaseAdapter)】
Main_activity.xml布局文件
< LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal"> < ListView android:id="@+id/mylist" android:layout_width="match_parent" android:layout_height="wrap_content"> < /ListView> < /LinearLayout>
Java代码
package com.contentprovide.liuliu.myapplication; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.Gallery; import android.widget.GridView; import android.widget.ImageView; import android.widget.ListView; import android.widget.TextView; import com.squareup.picasso.Picasso; public class MainActivity extends AppCompatActivity {ListView mylist; //声明主布局的ListView控件对象String to_te1[] = {"te11", "te12", "te13"}; String to_te2[] = {"te21", "te22", "te23"}; int to_ima[] = {R.mipmap.a1, R.mipmap.a2, R.mipmap.a3}; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mylist = (ListView) findViewById(R.id.mylist); //实例化自定义适配器,并将适配器添加到ListView中 MyAdapter myAdapter = new MyAdapter(); mylist.setAdapter(myAdapter); }//自定义一个类继承BaseAdapter类 class MyAdapter extends BaseAdapter {@Override public int getCount() {//返回的值作为ListView的列表项个数 return to_te1.length; //用自定义数组的长度作为返回的个数 }@Override public Object getItem(int i) {//返回列表项的下标 return i; }@Override public long getItemId(int i) {//返回id return i; }@Override public View getView(int i, View view, ViewGroup viewGroup) { Myholder myholder; if (view == null) { //将列表项的布局文件转换为view视图,自定义适配器的灵活性就体现在这一步 view = LayoutInflater.from(getApplicationContext()).inflate(R.layout.layout, null); myholder = new Myholder(); //通过view把布局中的id和在内部类中定义的对象绑定 myholder.ima = (ImageView) view.findViewById(R.id.ima); myholder.te1 = (TextView) view.findViewById(R.id.te1); myholder.te2 = (TextView) view.findViewById(R.id.te2); view.setTag(myholder); } else {myholder = (Myholder) view.getTag(); }//把数组中定义的内容按下标显示在控件中 for (int a = 0; a < 3; a++) { myholder.ima.setImageResource(to_ima[i]); myholder.te1.setText(to_te1[i]); myholder.te2.setText(to_te2[i]); }return view; }//在MyAdapter类的内部再定义一个内部类,用来定义和列表项布局(layout.xml)中的控件相对应类型的控件, //layout.xml中有一个ImageView和两个TextView控件 class Myholder { ImageView ima; TextView te1; TextView te2; }}}
推荐阅读
- 学习自建APP应用,so easy!
- Android LruCache原理
- 手机APP制作很复杂吗?NO!
- 安卓用户使用微信H5牛牛平台性能优化方面的探索方案
- 针对不同手机终端扫码安装对应环境APP
- Androidstudio调试真机提示-Device supports x86,but APK only supports armeabi-v7a,armeabi,x86_64
- 移动互联网App兼容性测试
- [LeetCode]202. Happy Number
- Android选择器Select