ListView用法

两个demo,参考hellogv的blog

主要的步骤如下:

package com.example.listviewtest;

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

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

/**
 * ListView的用法:
 * 1.初始化listview的数据源
 * 2.通过SimpleAdapter将数据源与listview的layout绑定
 * 3.将构建好的 adapter 与 listView 绑定
 * @author hint
 */
public class MainActivity extends Activity {

	List<HashMap<String,String>> myList; 
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		//初始化数据源
		initData();
		
		ListView listView = (ListView)findViewById(R.id.myListView);
		
		//数据源 与 listview的layout适配
		SimpleAdapter mSchedule = new SimpleAdapter(this, myList, R.layout.item_list,
				new String[]{"ItemTitle","ItemText"}, 
				new int[]{R.id.itemTitle,R.id.itemText});
		
		//listview绑定adapter
		listView.setAdapter(mSchedule);
		
	}

	private void initData(){
		myList = new ArrayList<HashMap<String,String>>();
		for(int i = 0; i < 30 ; i++){
			HashMap<String,String> map = new HashMap<String, String>();
			map.put("ItemTitle", "title "+i);
			map.put("ItemText", "text "+i);
			
			myList.add(map);
		}
	}
	
	@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;
	}

}

demo2:

这个demo复杂一点:

package com.example.listviewtest;

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;

/**
 *1.自定义adpter实现BaseAdapter接口->ListViewAdpter。 
 *2.ListViewAdpter中通过LayoutInflater(布局泵)渲染listView中每个单独的view。
 *3.将每个单独的view组成一个view数组
 *4.绑定当前的listview和ListViewAdpter
 * @author hint
 */
public class MainActivity2 extends Activity {

	
	private ListView listView ;
	private String[] itemTitles = {"标题1","标题2","标题3","标题4",};
	private String[] itemTexts = {"内容1","内容2","内容3","内容4",};; 
	private int[] itemImagese = {R.drawable.ic_launcher,R.drawable.ic_launcher,R.drawable.ic_launcher,R.drawable.ic_launcher};
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		listView = (ListView)findViewById(R.id.myListView);
		listView.setAdapter(new ListViewAdpter(itemTitles,itemTexts,itemImagese));
	}

	
	class ListViewAdpter extends BaseAdapter{
		
		View[] itemViews;
		
		public ListViewAdpter(String[] itemTitles,String[] itemTexts,int[] itemImagese) {	
			itemViews = new View[itemTitles.length];
			
			for(int i = 0; i < itemTitles.length; i++){
				itemViews[i] = makeItemView(itemTitles[i],itemTexts[i],itemImagese[i]);
			}
		}

		private View makeItemView(String itemTitle, String itemText, int itemImages) {
			LayoutInflater inflater = (LayoutInflater)MainActivity2.this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
//			LayoutInflater inflater2 = MainActivity2.this.getLayoutInflater();
			
			View itemView  = inflater.inflate(R.layout.item_list, null);
			TextView text = (TextView)itemView.findViewById(R.id.itemText);
			text.setText(itemText);
			
			TextView title = (TextView)itemView.findViewById(R.id.itemTitle);
			title.setText(itemTitle);
			
			ImageView image = (ImageView)itemView.findViewById(R.id.itemImage);
			image.setImageResource(itemImages);
					
			return itemView;
			
		}

		@Override
		public int getCount() {
			return itemViews.length;
		}

		@Override
		public Object getItem(int position) {
			return itemViews[position];
		}

		@Override
		public long getItemId(int position) {
			return position;
		}

		@Override
		public View getView(int position, View convertView, ViewGroup parent) {
			if(convertView == null){
				return itemViews[position];
			}
			return convertView;
		}
		
	}
	
	
	
	
	@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;
	}

}

猜你喜欢

转载自hwy1782.iteye.com/blog/1840277