Android新手入门2016(9)--ListView之SimpleAdapter和SimpleCursorAdapter

本文来自肥宝传说之路,引用必须注明出处!

ListView这几个Adapter究竟有什么不同,查了一下,其实主要是数据源不同,导致了不同的用法

ArrayAdapter 来源于字符串数组

SimpleAdapter 来源是List<Map<String,?>>格式的数据

SimpleCursorAdapter 来源于数据库

SimpleAdapter 相对于ArrayAdapter复杂一点,但可以显示更丰富的内容。


再来看看代码吧:

package com.fable.helloworld;
 
import android.app.Activity;  
import android.os.Bundle;   
import android.widget.ListView; 
import android.widget.SimpleAdapter; 
import java.util.*;

public class HelloWorldActivity extends Activity {  
    @Override  
    public void onCreate(Bundle savedInstanceState) {   
    	super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_hello_world);  
        //绑定XML中的ListView,作为Item的容器  
        ListView listView = (ListView) findViewById(R.id.MyListView);
          
        //生成动态数组,并且转载数据  
        ArrayList<HashMap<String, String>> mylist = new ArrayList<HashMap<String, String>>();  
        for(int i=0;i<5;i++)  
        {  
            HashMap<String, String> map = new HashMap<String, String>();  
            map.put("title", "我是标题" + i);  
            map.put("text", "我是子标题" + i);  
            mylist.add(map);  
        }  
        //生成适配器,数组===》ListItem  
        SimpleAdapter mSchedule = new SimpleAdapter(this, //上下文,就是这个Activity
            mylist,//数据来源   
            R.layout.my_list_item,//ListItem的XML实现   
            new String[] {"title", "text"},//动态数组与ListItem对应的子项            
            new int[] {R.id.ItemTitle,R.id.ItemText});//ListItem的XML文件里面的两个TextView ID   
        //添加并且显示  
        listView.setAdapter(mSchedule);   
    }  
}
上文中可以看出,使用了自己的布局文件:

/HelloWorld/res/layout/activity_hello_world.xml

<?xml version="1.0" encoding="utf-8"?>  
<LinearLayout   
        android:id="@+id/LinearLayout01"   
        android:layout_width="fill_parent"   
        android:layout_height="fill_parent"   
        xmlns:android="http://schemas.android.com/apk/res/android">  
          
        <ListView android:layout_width="wrap_content"   
                  android:layout_height="wrap_content"   
                  android:id="@+id/MyListView">  
        </ListView>  
</LinearLayout>  

再来一个列表项的布局文件:/HelloWorld/res/layout/my_list_item.xml

<?xml version="1.0" encoding="utf-8"?>  
<LinearLayout   
        android:layout_width="fill_parent"   
        xmlns:android="http://schemas.android.com/apk/res/android"   
        android:orientation="vertical"  
        android:layout_height="wrap_content"   
        android:id="@+id/MyListItem"   
        android:paddingBottom="3dip"   
        android:paddingLeft="10dip">  
        <TextView   
                android:layout_height="wrap_content"   
                android:layout_width="wrap_content"   
                android:id="@+id/ItemTitle"   
                android:textSize="30sp">  
        </TextView>  
        <TextView   
                android:layout_height="wrap_content"   
                android:layout_width="fill_parent"   
                android:id="@+id/ItemText">  
        </TextView>
</LinearLayout>  

 ===================================================================================================================

今天本来还想说说SimpleCursorAdapter。在网上找了一些例子,放进Eclipse里面,发现被弃用了。


认真看一下,原来是这个构造函数被改了。现在推荐用这个了,多了个flags

SimpleCursorAdapter (Context context, int layout, Cursor c, String[] from, int[] to,int flags)

不过没关系,我是新手,一样是新接触的。

context 上下文信息,传this进去就行了。

layout 布局文件,我们使用系统提供简单的格式吧 

flags是一个标识,标识当数据改变调用onContentChanged()的时候,是否通知ContentProvider数据的改变,如果无需监听ContentProvider的改变,则可以传0。对于SimpleCursorAdapter适配器的Cursor的改变,可以使用SimpleCursorAdapter.swapCursor(Cursor)方法,它会与旧的Cursor互换,并且返回旧的Cursor。

很多内容都被弃用,改了之后,发现startMangingCursor的方法也被弃用了,怎么找都找不到,或者说找到的方法我看不懂。

所以决定暂时放下,以后补充,大家学习Android的时候,千万别想着把所有东西都搞清楚,再去实际动手,这是没有意义的。到动手的时候照样什么也不会。遇到技术问题去网上找,是在找不到,或者像现在这样访问数据库的问题太高级了,不是一个还没入门的人能做到的。所以暂时放下是一个不错的选择。继续往前走吧,少年!


转载于:https://www.cnblogs.com/fablegame/p/6430280.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值