java适配器各三种_适配器三种

适配器有:

作用:用于将数据绑定到组件上

过程:写的内容----->适配器

控件------------------->通过适配器----->listView的布局

1,ArrayAdapter列表适配器

2,SimpleCursorAdapter简单标游适配器

3,BaseAdapter基础适配器

(2,3都可以用复杂的Lietview)

1,ArrayAdapter列表适配器(只能写TextView体系的控件)

java代码写:

package com.example.layou_text;

import java.util.ArrayList;

import java.util.HashMap;

import java.util.List;

import java.util.Map;

import android.R.string;

import android.app.Activity;

import android.os.Bundle;

import android.view.Menu;

import android.view.MenuItem;

import android.view.View;

import android.view.ViewGroup;

import android.widget.ArrayAdapter;

import android.widget.BaseAdapter;

import android.widget.ImageView;

import android.widget.ListView;

import android.widget.SimpleAdapter;

import android.widget.TextView;

public class CopyOfdi1Activity extends Activity {

ListView lv_man;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.lv_man);//加载(是布局不是id!)

lv_man=(ListView)findViewById(R.id.lv_man);//获取操作

// 注意写法不能写R.layout.获取布局

//准备数据

String [] data={"a","b","c","d","e","f","g","h"};

//构造arrayaadapter适配(上下文,加载另一个布局id,传入数据(数据会被传入布局中))

ArrayAdapter adapter = new ArrayAdapter(CopyOfdi1Activity.this,

R.layout.item_array_adapter,data);

// 加载textview体系的单个布局

//给lv_man设置适配器

lv_man.setAdapter(adapter);

}}

xml:(定义一个listview布局)id+lv_man.xml

android:id="@+id/lv_man"

android:layout_width="match_parent"

android:layout_height="match_parent" >

再写一个xml(定义listView里面的内容textview)

android:id="@+id/textview"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:textSize="20sp"

android:gravity="start"

>

ArrayAdapter效果图

cd08569f5249

image.png

2,SimpleAdapter简单的适配器

java写:

package com.example.layou_text;

import java.util.ArrayList;

import java.util.HashMap;

import java.util.List;

import java.util.Map;

import android.R.string;

import android.app.Activity;

import android.os.Bundle;

import android.view.Menu;

import android.view.MenuItem;

import android.view.View;

import android.view.ViewGroup;

import android.widget.ArrayAdapter;

import android.widget.BaseAdapter;

import android.widget.ImageView;

import android.widget.ListView;

import android.widget.SimpleAdapter;

import android.widget.TextView;

public class CopyOfdi2Activity extends Activity {

ListView lv_man;

List data;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.lv_man);//加载(是布局不是id!)

lv_man=(ListView) findViewById(R.id.lv_man);//获取操作

ArrayList> arrayList = new ArrayList>();

//new了一个Arraylist数组包含map集合

HashMap hashMap = new HashMap();

//new了一个map集合编写key value

hashMap=new HashMap();

//简写用上面hashMap的对象再新建一个map集合,赋值,添加到arrayList集合中

hashMap.put("icom", R.drawable.f2);

hashMap.put("name","美食--2");

hashMap.put("content","内容");

arrayList.add(hashMap);

hashMap=new HashMap();

hashMap.put("icom", R.drawable.f3);

hashMap.put("name","美食--3");

hashMap.put("content","内容");

arrayList.add(hashMap);

hashMap=new HashMap();

hashMap.put("icom", R.drawable.f4);

hashMap.put("name","美食--4");

hashMap.put("content","内容");

arrayList.add(hashMap);

hashMap=new HashMap();

hashMap.put("icom", R.drawable.f5);

hashMap.put("name","美食--5");

hashMap.put("content","内容");

arrayList.add(hashMap);

hashMap=new HashMap();

hashMap.put("icom", R.drawable.f6);

hashMap.put("name","美食--6");

hashMap.put("content","内容");

arrayList.add(hashMap);

hashMap=new HashMap();

hashMap.put("icom", R.drawable.f7);

hashMap.put("name","美食--7");

hashMap.put("content","内容");

arrayList.add(hashMap);

hashMap=new HashMap();

hashMap.put("icom", R.drawable.f8);

hashMap.put("name","美食--8");

hashMap.put("content","内容");

arrayList.add(hashMap);

hashMap=new HashMap();

hashMap.put("icom", R.drawable.f9);

hashMap.put("name","美食--9");

hashMap.put("content","内容");

arrayList.add(hashMap);

hashMap=new HashMap();

hashMap.put("icom", R.drawable.f10);

hashMap.put("name","美食--10");

hashMap.put("content","内容");

arrayList.add(hashMap);

//arrayList集合里面有许多个map集合,map集合中有许多的数据

// Map对象中的key的数组,用于得到对应的value

String from[]={"icom","name","content"};//定义from代表map里面的key值

// item布局文件中的子View的id的数组

int [] to ={R.id.imageView1,R.id.tv_item_name,R.id.tv_item_content,};

//定义to代表布局控件

// 准备SimpleA

SimpleAdapter simpleAdapter = new SimpleAdapter(this, arrayList,

R.layout.activity_chatn, from, to);

//加载包含to的控件视图(不是视图id),from是通过key获取了value值,

// to是把value赋给了布局中的控件

lv_man.setAdapter(simpleAdapter);

// 设置适配器

}

}

lv_man.xml布局写

android:id="@+id/lv_man"

android:layout_width="match_parent"

android:layout_height="match_parent" >

再写一个xml(定义listView里面的内容控件)

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:orientation="horizontal" >

android:id="@+id/imageView1"

android:layout_width="80dp"

android:layout_height="80dp"

android:gravity="center_vertical"

android:src="@drawable/f1" />

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:orientation="vertical"

android:gravity="center_vertical"

android:layout_marginLeft="10dp"

>

android:id="@+id/tv_item_name"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

/>

android:id="@+id/tv_item_content"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_margin="10dp"

/>

效果图

cd08569f5249

image.png

3,BaseAdapter基础适配器(需要继承是抽象类)

java写

package com.example.layou_text;

import java.util.ArrayList;

import java.util.HashMap;

import java.util.List;

import java.util.Map;

import android.R.string;

import android.app.Activity;

import android.os.Bundle;

import android.view.Menu;

import android.view.MenuItem;

import android.view.View;

import android.view.ViewGroup;

import android.widget.ArrayAdapter;

import android.widget.BaseAdapter;

import android.widget.ImageView;

import android.widget.ListView;

import android.widget.SimpleAdapter;

import android.widget.TextView;

public class MainActivity extends Activity {

ListView lv_man;//列表视图

List data;//不用map用了shoinfo类来储存数据集合

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.lv_man);//加载(是布局不是id!)

lv_man=(ListView) findViewById(R.id.lv_man);//获取操作

// 准备集合数据

data =new ArrayList();

data.add(new shoinfo(R.drawable.f1,"美食名--1","美食内容--1"));

data.add(new shoinfo(R.drawable.f2,"美食名--2","美食内容--2"));

data.add(new shoinfo(R.drawable.f3,"美食名--3","美食内容--3"));

data.add(new shoinfo(R.drawable.f4,"美食名--4","美食内容--4"));

data.add(new shoinfo(R.drawable.f5,"美食名--5","美食内容--5"));

data.add(new shoinfo(R.drawable.f6,"美食名--6","美食内容--6"));

data.add(new shoinfo(R.drawable.f7,"美食名--7","美食内容--7"));

data.add(new shoinfo(R.drawable.f8,"美食名--8","美食内容--8"));

data.add(new shoinfo(R.drawable.f9,"美食名--9","美食内容--9"));

data.add(new shoinfo(R.drawable.f10,"美食名--10","美食内容--10"));

// 准备Baseadapter对象

Myadapter myadapter = new Myadapter();

//设置Adapter显示列表

lv_man.setAdapter(myadapter);

}

class Myadapter extends BaseAdapter{//定义一个局部内部类继承BaseAdapter

//返回集合的总数

@Override

public int getCount() {

return data.size();

}

//返回指定下标对应的数据对象

@Override

public Object getItem(int position) {

return data.get(position);

}

//返回每个条目的ID

@Override

public long getItemId(int position) {

// TODO Auto-generated method stub

return position;

}

//返回指定下标所对应的Item的View对象(试图和总数)

// position下标

// convertView可以复用的缓存Item视图对象, 前n+1个为null

// parent listView对象

@Override

public View getView(int position, View convertView, ViewGroup parent) {

// 1.创建或得到对应当前行的一个Viewholder对象

ViewHolder hole=null;

if(convertView==null){

// 加载布局Item的布局,得到View对象

convertView = View.inflate(MainActivity.this, R.layout.activity_chatn, null);

hole=new ViewHolder();

// 获取到convertView的子view的控件

hole.findViewById = (ImageView) convertView.findViewById(R.id.imageView1);

hole.view = (TextView) convertView.findViewById(R.id.tv_item_name);

hole.view1 = (TextView) convertView.findViewById(R.id.tv_item_content);

// 将holder对象保存到converterView上

convertView.setTag(hole);

}else{

hole=(ViewHolder)convertView.getTag();

}

// 根据position设置对应的数据

// 得到当行的数据对象

shoinfo shoinfo = data.get(position);

// 得到子View对象

// 给ViewHolder对象的视图设置数据

hole.findViewById.setImageResource(shoinfo.getIncon());

hole.view.setText(shoinfo.getName());

hole.view1.setText(shoinfo.getContent());

return convertView;

}

//数据类

class ViewHolder{

public ImageView findViewById;

public TextView view;

public TextView view1;

}

}

}

java写一个存放数据类

package com.example.layou_text;

public class shoinfo {

public int incon;

public String name;

public String content;

@Override

public String toString() {

return "shoinfo [incon=" + incon + ", name=" + name + ", content="

+ content + "]";

}

public int getIncon() {

return incon;

}

public void setIncon(int incon) {

this.incon = incon;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public String getContent() {

return content;

}

public void setContent(String content) {

this.content = content;

}

public shoinfo(int incon, String name, String content) {

super();

this.incon = incon;

this.name = name;

this.content = content;

}

}

定义一个listview(id+lv_man)

android:id="@+id/lv_man"

android:layout_width="match_parent"

android:layout_height="match_parent" >

再写一个xml(定义listView里面的内容控件)

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:orientation="horizontal" >

android:id="@+id/imageView1"

android:layout_width="80dp"

android:layout_height="80dp"

android:src="@drawable/f1" />

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:orientation="vertical"

android:gravity="center_vertical"

android:layout_marginLeft="10dp"

>

android:id="@+id/tv_item_name"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

/>

android:id="@+id/tv_item_content"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_margin="10dp"

/>

效果图

cd08569f5249

image.png

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值