现在的位置: 首页 > 综合 > 正文

Android-ListView 学习总结

2018年05月14日 ⁄ 综合 ⁄ 共 3945字 ⁄ 字号 评论关闭

实现列表显示数据需要三个步骤:用ListView来显示内容需要三点:

1、一个ListView

2、适配器用来把数据映射到ListView

3、数据源

一、ListView的实现两种方式:

1、继承ListActivity

import android.os.Bundle;
import android.app.Activity;
import android.app.ListActivity;
import android.view.Menu;
 
 
public class MainActivity extends ListActivity{
 
 
@Override
protected void onCreate(BundlesavedInstanceState) {
super.onCreate(savedInstanceState);
}
 
 
@Override
public boolean onCreateOptionsMenu(Menumenu) {
// Inflate the menu; this adds items to theaction bar if it is present.
getMenuInflater().inflate(R.menu.main,menu);
return true;
}
 
 
}

2、继承Activity,绑定ListView布局

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
 
 
public class ListViewActivity extends Activity {
 
 
@Override
protected void onCreate(BundlesavedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_list_view);
}
 
 
@Override
public boolean onCreateOptionsMenu(Menumenu) {
// Inflate the menu; this adds items to theaction bar if it is present.
getMenuInflater().inflate(R.menu.list_view,menu);
return true;
}
 
 
}

对应的布局文件:activity_list_view.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="vertical" >
    
    <ListView 
        android:id="@+id/listView"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        ></ListView>"
    

</LinearLayout>

二、适配器类型:

适配器有4种:

 1.ArrayAdapter最为简单,只能展示一行字。

package com.example.ListView_demo;

import java.util.ArrayList;
import java.util.List;

import com.example.list_demo.R;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.widget.ArrayAdapter;
import android.widget.ListView;
/*
 * @Author AuthorK
 * 用ArrayAdapter来实现列表显示文本
 */
public class ArrayAdapterList extends Activity {

	private ListView listView;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		listView=new ListView(this);
		/*
		 * 上面代码使用了ArrayAdapter(Context context, int textViewResourceId,
		 *  List<T> objects)来装配数据,要装配这些数据就需要一个连接ListView视图对象
		 *  和数组数据的适配器来两者的适配工作,ArrayAdapter的构造需要三个参数,依次为this,
		 *  布局文件(注意这里的布局文件描述的是列表的每一行的布局,
		 *  android.R.layout.simple_list_item_1是系统定义好的布局文件只显示一行文字,
		 *  数据源(一个List集合)。同时用setAdapter()完成适配的最后工作
		 */
	    listView.setAdapter(new ArrayAdapter<String>(
	    		this,android.R.layout.simple_list_item_1,getData()));
		setContentView(listView);
	}
    
	private List<String> getData() {
		List<String> list=new ArrayList<String>();
		list.add("ArrayAdapter例子");
		list.add("陈奕迅");
		list.add("MayDay");
		return list;
	}
	
	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.array_adapter_list_view, menu);
		return true;
	}

}

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

package com.example.ListView_demo;

import java.util.*;

import com.example.list_demo.R;


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

public class SimpleAdapterList extends ListActivity {

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
       
        SimpleAdapter adapter = new SimpleAdapter(this,getData(),R.layout.item1,
				new String[]{"info","img"},
				new int[]{R.id.textView,R.id.imageView});
		setListAdapter(adapter);
    }

    private List<Map<String, Object>> getData() {
		List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();

		Map<String, Object> map = new HashMap<String, Object>();
		//map.put("title", "G1");
		map.put("info", "微信");
		map.put("img", R.drawable.pic1);
		list.add(map);

		map = new HashMap<String, Object>();
		//map.put("title", "G2");
		map.put("info", "QQ");
		map.put("img", R.drawable.pic2);
		list.add(map);

		map = new HashMap<String, Object>();
		//map.put("title", "G3");
		map.put("info", "截图");
		map.put("img", R.drawable.pic3);
		list.add(map);
		
		return list;
	}

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

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

 4、自定义适配器(通过继承抽象类BaseAdapter)

三、数据源

1、本地数据源

2、网络数据源

抱歉!评论已关闭.