关闭

D.K.的Android旅程----SimpleAdapter实现ListView

标签: 新手androidlistview
330人阅读 评论(0) 收藏 举报
分类:

       使用Adapter接口实现ListView.

       上次已经介绍过了ArrayAdapter与继承ListActivity实现ListView,接下来说说使用SimpleAdapter实现ListView,SimpleAdapter。

       使用Adapter实现ListView无非就是先设置好Adapter然后在调用setAdapter().所以,关键还是如何设计Adapter.

SimpleAdapter:

       虽然命名有simple简单的意思,但其实一点都不简单。它的功能十分强大。Android基本的应用场景都可以由它实现。

先是XML:

<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"

   xmlns:tools="http://schemas.android.com/tools"

   android:layout_width="match_parent"

   android:layout_height="match_parent" >

   

    <ListView

        android:id="@+id/listview"

       android:layout_width="fill_parent"

       android:layout_height="wrap_content"

         />

</LinearLayout>

 

SimpleAdapter有一个构造方法:

       SimpleAdapter(Contextcontext, List<? extends Map<String, ?>> data, int resource,String[] from, int[] to)。

       所以,下面代码我会以此构造函数来实例化adapter.

Java部分代码:

       privateString[] names = new String[]

              {"AA", "BB", "CC", "DD"};

       privateString[] descs = new String[]

              {"aa", "bb", "cc", "dd"};      

 

       @Override

       public voidonCreate(Bundle savedInstanceState)

       {

              super.onCreate(savedInstanceState);

              setContentView(R.layout.main);

              // 创建一个List集合,List集合的元素是Map

              List<Map<String,Object>> listItems =

                            newArrayList<Map<String, Object>>();

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

              {

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

                     listItem.put("personName",names[i]);

                     listItem.put("desc",descs[i]);

                     listItems.add(listItem);

              }

              // 创建一个SimpleAdapter

              SimpleAdaptersimpleAdapter = new SimpleAdapter(this, listItems,

                     R.layout.simple_item,

                     new String[] {"personName", "desc"},

                     newint[] { R.id.name, R.id.desc });

              ListViewlist = (ListView) findViewById(R.id.mylist);

              // 为ListView设置Adapter

              list.setAdapter(simpleAdapter);

 

上面用到了一个自己写的XML( R.layout.simple_item):

<?xmlversion="1.0" encoding="utf-8"?>

<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"

    android:orientation="horizontal"

    android:layout_width="match_parent"

    android:layout_height="wrap_content">

<!--定义一个ImageView,用于作为列表项的一部分。-->

<LinearLayout

    android:orientation="vertical"

    android:layout_width="match_parent"

    android:layout_height="wrap_content">

<!--定义一个TextView,用于作为列表项的一部分。-->

<TextViewandroid:id="@+id/name"

    android:layout_width="wrap_content"

    android:layout_height="wrap_content"

    android:textSize="20dp"

    android:textColor="#f0f"

    android:paddingLeft="10dp"

    />

<!--定义一个TextView,用于作为列表项的一部分。-->

<TextViewandroid:id="@+id/desc"

    android:layout_width="wrap_content"

    android:layout_height="wrap_content"

    android:textSize="14dp"

    android:paddingLeft="10dp"

    />

</LinearLayout>

</

       使用Adapter接口实现ListView.

       上次已经介绍过了ArrayAdapter与继承ListActivity实现ListView,接下来说说使用SimpleAdapter实现ListView,SimpleAdapter。

       使用Adapter实现ListView无非就是先设置好Adapter然后在调用setAdapter().所以,关键还是如何设计Adapter.

SimpleAdapter:

       虽然命名有simple简单的意思,但其实一点都不简单。它的功能十分强大。Android基本的应用场景都可以由它实现。

先是XML:

<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"

   xmlns:tools="http://schemas.android.com/tools"

   android:layout_width="match_parent"

   android:layout_height="match_parent" >

   

    <ListView

        android:id="@+id/listview"

       android:layout_width="fill_parent"

       android:layout_height="wrap_content"

         />

</LinearLayout>

 

SimpleAdapter有一个构造方法:

       SimpleAdapter(Contextcontext, List<? extends Map<String, ?>> data, int resource,String[] from, int[] to)。

       所以,下面代码我会以此构造函数来实例化adapter.

Java部分代码:

       privateString[] names = new String[]

              {"AA", "BB", "CC", "DD"};

       privateString[] descs = new String[]

              {"aa", "bb", "cc", "dd"};      

 

       @Override

       public voidonCreate(Bundle savedInstanceState)

       {

              super.onCreate(savedInstanceState);

              setContentView(R.layout.main);

              // 创建一个List集合,List集合的元素是Map

              List<Map<String,Object>> listItems =

                            newArrayList<Map<String, Object>>();

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

              {

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

                     listItem.put("personName",names[i]);

                     listItem.put("desc",descs[i]);

                     listItems.add(listItem);

              }

              // 创建一个SimpleAdapter

              SimpleAdaptersimpleAdapter = new SimpleAdapter(this, listItems,

                     R.layout.simple_item,

                     new String[] {"personName", "desc"},

                     newint[] { R.id.name, R.id.desc });

              ListViewlist = (ListView) findViewById(R.id.mylist);

              // 为ListView设置Adapter

              list.setAdapter(simpleAdapter);

 

上面用到了一个自己写的XML( R.layout.simple_item):

<?xmlversion="1.0" encoding="utf-8"?>

<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"

    android:orientation="horizontal"

    android:layout_width="match_parent"

    android:layout_height="wrap_content">

<!--定义一个ImageView,用于作为列表项的一部分。-->

<LinearLayout

    android:orientation="vertical"

    android:layout_width="match_parent"

    android:layout_height="wrap_content">

<!--定义一个TextView,用于作为列表项的一部分。-->

<TextViewandroid:id="@+id/name"

    android:layout_width="wrap_content"

    android:layout_height="wrap_content"

    android:textSize="20dp"

    android:textColor="#f0f"

    android:paddingLeft="10dp"

    />

<!--定义一个TextView,用于作为列表项的一部分。-->

<TextViewandroid:id="@+id/desc"

    android:layout_width="wrap_content"

    android:layout_height="wrap_content"

    android:textSize="14dp"

    android:paddingLeft="10dp"

    />

</LinearLayout>

</LinearLayout>

>
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:4539次
    • 积分:146
    • 等级:
    • 排名:千里之外
    • 原创:10篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章分类