自定义BaseAdapter
来源:互联网 发布:mac如何恢复苹果系统 编辑:程序博客网 时间:2024/05/22 12:58
ArrayAdapter
最简单的Adapter,表项中只含有文本信息的情况
<?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"> <ListView android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/listview1"> </ListView></LinearLayout>
public class MyListViewActivity extends AppCompatActivity { private ListView mListView; private String []array={"1","2","3","4"}; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.listview); ArrayAdapter<String> adapter=new ArrayAdapter(this,android.R.layout.activity_list_item,array); mListView=(ListView)findViewById(R.id.listview1); mListView.setAdapter(adapter); } }
SimpleAdapter
比ArrayAdapter复杂,每一个列表项中含有不同的子控件
XML文件相同可参见上下例
public class MyListViewActivity extends AppCompatActivity { private ListView mListView; private String []array={"1","2","3","4"}; private List <HashMap<String,String>>mData; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.listview); // ArrayAdapter adapter=new ArrayAdapter(this,android.R.layout.activity_list_item,array); mListView=(ListView)findViewById(R.id.listview1); //LayoutInflater作用是将layout的xml布局文件实例化为View类对象。 // LayoutInflater inflater=getLayoutInflater(); initData(); SimpleAdapter adapter=new SimpleAdapter(this,mData,R.layout.list_simple_item, new String[]{"name","age","sex","hobby"},new int[]{R.id.name,R.id.age,R.id.sex,R.id.hobby}); mListView.setAdapter(adapter); //mListView.setOnItemLongClicListener();长按点击事件 mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { HashMap<String,String>itemData=mData.get(position); Log.d("data",""+itemData.get("name")); } }); } public void initData(){ mData=new ArrayList(); HashMap<String,String>zhangsan=creatHashMap("张三","20","男","打篮球"); HashMap<String,String>lisi=creatHashMap("李四","20","男","吃"); HashMap<String,String>wangwu=creatHashMap("王五","20","男","玩"); HashMap<String,String>zhaoliu=creatHashMap("赵六","20","男","睡觉"); } public HashMap<String,String>creatHashMap(String name,String age,String sex,String hobby){ HashMap<String,String>zhangsan=new HashMap<>(); zhangsan.put("name",name); zhangsan.put("sge",age); zhangsan.put("sex",sex); zhangsan.put("hobby",hobby); return zhangsan; }}
SimpleCursorAdapter
把从数据库查出的数据适配给AdapterView
自定义Adapter(最重要最常用)
BaseAdapter5个方法
MVC模式
M是数据V是adapter中getview中的view C是listview
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="match_parent"> <ImageView android:id="@+id/img" android:layout_width="100dp" android:layout_height="100dp" /> <TextView android:id="@+id/name" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="姓名" android:layout_margin="10dp"/> <LinearLayout android:orientation="vertical" android:layout_width="wrap_content" android:layout_height="wrap_content" > <TextView android:id="@+id/age" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="年龄"/> <TextView android:id="@+id/sex" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="性别"/> </LinearLayout> <TextView android:id="@+id/hobby" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="爱好" android:layout_margin="10dp"/></LinearLayout>
<?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"> <ListView android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/listview1"> </ListView></LinearLayout>
StudentAdapter
public class StudentAdapter extends BaseAdapter { private List<Student> mData ; private LayoutInflater mInflater; public StudentAdapter( LayoutInflater Inflater,List<Student> data){ //将inflater和数据传递到适配器 mInflater=Inflater; mData=data; } @Override public int getCount() { //得到ListView将要显示的数据的条数 return mData.size(); } @Override public Object getItem(int position) { //返回索引 return position; } @Override public long getItemId(int position) { //返回索引 return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { //LauoutInflater View view=mInflater.inflate(R.layout.list_simple_item,null); Student student=mData.get(position); TextView name= (TextView) view.findViewById(R.id.name); TextView age= (TextView) view.findViewById(R.id.age); TextView sex= (TextView) view.findViewById(R.id.sex); TextView hobby= (TextView) view.findViewById(R.id.hobby); ImageView img=(ImageView)view.findViewById(R.id.img); name.setText(student.getName()); age.setText(student.getAge()); sex.setText(student.getSex()); hobby.setText(student.getHobby()); img.setImageResource(student.getImg()); return view; }}
MyBaseAdapterActivity
public class MyBaseAdapterActivity extends AppCompatActivity { private ListView mListView; private List<Student> mData; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.listview); mListView=(ListView)findViewById(R.id.listview1); //LayoutInflater作用是将layout的xml布局文件实例化为View类对象。 LayoutInflater inflater=getLayoutInflater(); initData(); StudentAdapter adapter=new StudentAdapter( inflater,mData); mListView.setAdapter(adapter); } public void initData(){ mData=new ArrayList<>(); Student zhangsan=new Student("张三","21","男","打篮球",R.mipmap.baby); Student lisi=new Student("张三","21","男","打篮球",R.mipmap.baby); Student wangwu=new Student("张三","21","男","打篮球",R.mipmap.baby); Student zhaoliu=new Student("张三","21","男","打篮球",R.mipmap.baby); mData.add(zhangsan); mData.add(lisi); mData.add(wangwu); mData.add(zhaoliu); }}
Student
public class Student extends HashMap<String, String> { private String name; private String sex; private String age; private String hobby; private int img; public Student(String name,String sex,String age, String hobby,int img){ this.name=name; this.age=age; this.sex=sex; this.hobby=hobby; this.img=img; } public int getImg() { return img; } public void setImg(int img) { this.img = img; } public String getHobby() { return hobby; } public void setHobby(String hobby) { this.hobby = hobby; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public String getAge() { return age; } public void setAge(String age) { this.age = age; }}
结果如下
1 0
- 自定义BaseAdapter
- 自定义BaseAdapter
- 自定义BaseAdapter
- 自定义BaseAdapter
- 自定义BaseAdapter
- BaseAdapter数据刷新,自定义BaseAdapter
- android自定义 BaseAdapter
- android AutoCompleteTextView 自定义BaseAdapter
- 自定义Adapter:BaseAdapter
- Android自定义适配器BaseAdapter
- 实现自定义的BaseAdapter
- android AutoCompleteTextView 自定义BaseAdapter
- 自定义BaseAdapter[转]
- BaseAdapter自定义实现代码
- 自定义BaseAdapter[转]
- android AutoCompleteTextView 自定义BaseAdapter
- 自定义PopupWindow+BaseAdapter+Anim
- android 自定义适配器BaseAdapter
- [leetcode-229]Majority Element II(c++)
- 【cocos2d-x 3.7 飞机大战】 决战南海I (九) 飘字特效
- Htpp通讯——Java实现
- HDU 5289 Assignment (二分+区间最值)
- 08-排序3. Talent and Virtue (25)
- 自定义BaseAdapter
- CheckBox,ImageView,ListView
- 【九度OJ1373】|【剑指offer32】整数中1出现的次数(从1到n整数中1出现的次数)
- UITextField 弹出键盘的外观(类型)设置
- ARM处理器启动流程
- Run-Time Check Failure #0 - The value of ESP was not properly saved across a function call
- 【cocos2d-x 3.7 飞机大战】 决战南海I (十) 游戏主场景
- Android的控件CheckBox、ImageView以及ListView的自定义Adapter用法
- 解决双系统下如何完全卸载Ubuntu系统