现在的位置: 首页 > 移动开发 > 正文

Android ListView使用

2017年06月11日 移动开发 ⁄ 共 3939字 ⁄ 字号 评论关闭

        ListView是Android中常用的控件之一,用于数据展示。因此需要提供数据供展示,但是数据部呢个直接传递给ListView,所以需要适配器进行传递。

1、简单的ListView使用

        如果展示列表中不需要展示复杂的东西,则使用ArrayAdapter适配器就可以实现。实例如下:

      (1)activity_main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <ListView 
       android:id="@+id/list_view1"
       android:layout_width="match_parent" 
       android:layout_height="match_parent"
     >  
    </ListView>
</LinearLayout>

       在此布局中个ListView控件。

      (2)MainActivity.java

package com.example.testviewlist;

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;

public class MainActivity extends Activity {
	
	private String[] viewListData = {"姓名:yy","微博:残缺的孤独","微信公众号:残缺的孤独","工作地:北京","感悟:要么强大,要么听话"};
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		//获取ListView
		ListView listView = (ListView) findViewById(R.id.list_view1);
		//适配器
		ArrayAdapter<String> adapter = new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_list_item_1, viewListData);
		//使用适配器传递数据
		listView.setAdapter(adapter);
		
		//添加点击事件
		listView.setOnItemClickListener(new OnItemClickListener() {
			@Override
			public void onItemClick(AdapterView<?> parent, View view, int position,
					long id) {
				String info = viewListData[position];
				Toast.makeText(MainActivity.this, info, Toast.LENGTH_SHORT).show();
			}
		});
	}
	

	@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;
	}

}

         (3)结果展示

                  运行,见如下效果:

                                            

              点击效果如下:

                                            

2、ListView之标题使用

        使用SimpleAdapter适配器可以实现各种布局,扩展性好。使用SimpleAdapter时,数据一般是由HashMap组成的List,List每一行对应于ListView的一行。HashMap中的key-value数据映射到布局文件中对应的id组件上。接着上方继续修改。

      (1)activity_main.xml

                  保持不变

       (2)修改MainActivity.java             

package com.example.testviewlist;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.Toast;

public class MainActivity extends Activity {
	
//	private String[] viewListData = {"姓名:yy","微博:残缺的孤独","微信公众号:残缺的孤独","工作地:北京","感悟:要么强大,要么听话"};
	
	private String[] vl_title = {"姓名","微博","微信公众号","工作地","感悟"};
	private String[] vl_info =  {"yy","残缺的孤独","残缺的孤独","北京","要么强大,要么听话"};
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		//获取ListView对象
		ListView listView = (ListView) findViewById(R.id.list_view1);
		
		List<Map<String,Object>> listData= new ArrayList<Map<String,Object>>();;  
		for(int i=0;i<vl_title.length;i++){
			//组装Map数据
			Map<String,Object> dataMap = new HashMap<String,Object>();
			dataMap.put("title", vl_title[i]);
			dataMap.put("info", vl_info[i]);
			listData.add(dataMap);
		}
		//适配器
		 SimpleAdapter adapter = new SimpleAdapter(this,listData,android.R.layout.simple_list_item_2,  
			        new String[]{"title","info"},new int[]{android.R.id.text1,android.R.id.text2});  
		 listView.setAdapter(adapter);
			
			//添加点击事件
			listView.setOnItemClickListener(new OnItemClickListener() {
				@Override
				public void onItemClick(AdapterView<?> parent, View view, int position,
						long id) {
					String title = vl_title[position];
					String info = vl_info[position];
					Toast.makeText(MainActivity.this, title + ": " + info, Toast.LENGTH_SHORT).show();
				}
			});
	}
	

	@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;
	}

}

         在使用SimpleAdapter的此构造函数中:第一个参数为上下文,第二个参数为数据,第三个参数是布局文件,第四个参数为数据项的key,第五个参数为要填充的组件。

        (3)效果

                  效果如下图展示:

                                         

抱歉!评论已关闭.