适配器有几种用法,怎样看适配器的参数

首页 > 数码 > 作者:YD1662024-05-14 22:10:40


2)SimpleAdapter使用示例:

SimpleAdapter:简单的Adapter,看似简单,功能强大,下面我们来写个稍微复杂一点的列表 布局吧!

运行效果图:

适配器有几种用法,怎样看适配器的参数(9)

代码实现:

先来编写一个列表项目每一项的布局:

list_item.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 -->

<ImageView

android:id="@ id/imgtou"

android:layout_width="64dp"

android:layout_height="64dp"

android:baselineAlignBottom="true"

android:paddingLeft="8dp" />

<!-- 定义一个竖直方向的LinearLayout,把QQ呢称与说说的文本框设置出来 -->

<LinearLayout

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:orientation="vertical">

<TextView

android:id="@ id/name"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:paddingLeft="8dp"

android:textColor="#1D1D1C"

android:textSize="20sp" />

<TextView

android:id="@ id/says"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:paddingLeft="8px"

android:textColor="#B4B4B9"

android:textSize="14sp" />

</LinearLayout>

</LinearLayout>

接下来是MainActivity.java:

public class MainActivity extends AppCompatActivity {

private String[] names = new String[]{"B神", "基神", "曹神"};

private String[] says = new String[]{"无形被黑,最为致命", "大神好厉害~", "我将带头日狗~"};

private int[] imgIds = new int[]{R.mipMap.head_icon1, R.mipmap.head_icon2, R.mipmap.head_icon3};

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

List<Map<String, Object>> listitem = new ArrayList<Map<String, Object>>();

for (int i = 0; i < names.length; i ) {

Map<String, Object> showitem = new HashMap<String, Object>();

showitem.put("touxiang", imgIds[i]);

showitem.put("name", names[i]);

showitem.put("says", says[i]);

listitem.add(showitem);

}

//创建一个simpleAdapter

SimpleAdapter myAdapter = new SimpleAdapter(getApplicationContext(), listitem, R.layout.list_item, new String[]{"touxiang", "name", "says"}, new int[]{R.id.imgtou, R.id.name, R.id.says});

ListView listView = (ListView) findViewById(R.id.list_test);

listView.setAdapter(myAdapter);

}

}

好的,上面就是SimpleAdapter的简单用法了,有点意思~

适配器有几种用法,怎样看适配器的参数(10)


3)SimpleCursorAdapter使用示例:

虽然这东西过时了,不过对于不怎么会SQLite的初学者来说,用起来还是蛮方便的! 记得前面我们学ContentProivder写过的读取联系人的例子么?之前是通过打印Log的 方式显示出来,现在我们通过这个SimpleCursorAdapter把它显示到ListView上!

实现效果图

适配器有几种用法,怎样看适配器的参数(11)

代码实现

先写下listView每个item的布局:

list_item.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">

<TextView

android:id="@ id/list_name"

android:layout_width="0dp"

android:layout_height="64dp"

android:layout_weight="1"

android:gravity="center"

android:text="小猪"

android:textColor="#0000FF"

android:textSize="18sp" />

<TextView

android:id="@ id/list_phone"

android:layout_width="0dp"

android:layout_height="64dp"

android:layout_weight="1"

android:gravity="center"

android:text="13798989898"

android:textColor="#EA5C4D"

android:textSize="18sp" />

</LinearLayout>

接着activity_main布局和前面的一样,就是简单的ListView,然后是

MainActivity.java:

public class MainActivity extends AppCompatActivity {

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

ListView list_test = (ListView) findViewById(R.id.list_test);

//读取联系人

Cursor cursor = getContentResolver()

.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, null, null, null);

SimpleCursorAdapter spcAdapter = new SimpleCursorAdapter(this,R.layout.list_item,cursor,

new String[]{ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME,ContactsContract.CommonDataKinds.Phone.NUMBER},

new int[]{R.id.list_name,R.id.list_phone});

list_test.setAdapter(spcAdapter);

}

}

最后AndroidManifest.xml里加个读联系人的权限就可以了!

<uses-permission android:name="android.permission.READ_CONTACTS"/>

一问一答:

:就这么简单?

——答:是的,直接获取到Cursor,然后绑定就好了,无需你自己再写什么SQL语句!

:你说这东西过时了,那拿什么来代替?

——答:一般的做法是自己重写BaseAdapter,获取到数据集合后跟对应的控件进行绑定!

:这个SimpleCursorAdapter还有没有要注意的地方?

——答:有,使用SimpleCursorAdapter的话,绑定的数据库表中一定要有id这个字段, 或者as id;而且在绑定时取出的数据必须包含这个id项,否则的话会报以下错误! java.lang.IllegalArgumentException: column 'id' does not exist**


本节小结:

好的,关于Adapter的基础讲解就到这里,当然我们这里讲解的三个Adapter,我们实际开发中... 基本上用不到,哈哈,除了SimpleAdapter偶尔可能会用下,一般我们都是重写BaseAdapter的!

另外,关于BaseAdapter的,有很多东西要讲解,就把他丢到ListView那里一起讲,毕竟Adapter 总是和View沾边,而且ListView是我们用得最多的一个空间~嗯,

上一页123末页

栏目热文

文档排行

本站推荐

Copyright © 2018 - 2021 www.yd166.com., All Rights Reserved.