android 界面之 listview

来源:互联网 发布:知乎心理学书籍推荐 编辑:程序博客网 时间:2024/06/06 19:37

表的显示需要三个元素:

1.准备ListView要显示的数据

2.使用一维或多维动态数组保存数据;

2.构建适配器 简单地来说,适配器就是Item数组动态数组有多少元素就生成多少个Item;

3.把适配器添加到ListView,并显示出来。

根据列表的适配器类型,列表分为三种,ArrayAdapter,SimpleAdapter和SimpleCursorAdapter

其中以ArrayAdapter最为简单,只能展示一行字。

SimpleAdapter有最好的扩充性,可以自定义出各种效果。

SimpleCursorAdapter可以认为是SimpleAdapter对数据库的简单结合,可以方面的把数据库的内容以列表的形式展示出来。



最简单的例子:

activity_main.xml文件,用于描述整个ListView的属性

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical"
    tools:context=".MainActivity" >
<ListView 
   android:layout_width="fill_parent"
   android:layout_height="wrap_content"
   android:id="@+id/listview"
   />
</LinearLayout>


list_view_item.xml文件,用于描述单个Item的属性

<LinearLayout
     xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="fill_parent"
     android:layout_height="wrap_content"
     android:orientation="horizontal"
     >  
    <TextView
        android:id="@+id/Title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        />
    <TextView
        android:id="@+id/text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        />
</LinearLayout>


JAVA代码:

package tk.orangers.android_activity004_listactivity;

import java.util.ArrayList;
import java.util.HashMap;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.widget.ListView;
import android.widget.SimpleAdapter;

public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ListView list = (ListView)this.findViewById(R.id.listview);
ArrayList<HashMap<String, String>> mylist = new ArrayList<HashMap<String, String>>();  
   for(int i=0;i<30;i++)  
   {  
       HashMap<String, String> map = new HashMap<String, String>();  
       map.put("ItemTitle", "This is Title"+i);  
       map.put("ItemText", "This is text"+i);  
       mylist.add(map);  
   }  
   //生成适配器,数组===》ListItem   
   SimpleAdapter mSchedule = new SimpleAdapter(this, //没什么解释   
                                               mylist,//数据来源    
                                               R.layout.list_view_item,//ListItem的XML实现   
                                                 
                                               //动态数组与ListItem对应的子项           
                                               new String[] {"ItemTitle", "ItemText"},   
                                                 
                                               //ListItem的XML文件里面的两个TextView ID   
                                               new int[] {R.id.Title,R.id.text});  
   //添加并且显示   
   list.setAdapter(mSchedule);  
}


@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}


}



--------高级--------------------------------------------------------------------------------------------------------------

继承ListActivity

重写onCreate()

生成adapter

setAdapter()


重要事件:

void onListItemClick(ListView l,view v,int position,long id)//

原创粉丝点击