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

Android入门/ListView(八)

2018年05月26日 ⁄ 综合 ⁄ 共 4263字 ⁄ 字号 评论关闭

显示ListView步骤

1.   准备ListView要显示的数据

2.   使用数组保存数据 

3.   创建适配器Adpater, 适配器就是每一行显示的数组Items

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

5. 添加 List 点击/长按/判断长按的 Items

///为数组Items创建布局,实现图片两行Items布局,

Items的布局,每一列的List都使用这个布局

<?xml version="1.0" encoding="utf-8"?>  
<RelativeLayout   
         android:layout_width="fill_parent"   
         xmlns:android="http://schemas.android.com/apk/res/android"   
         android:layout_height="wrap_content"   
         android:paddingBottom="4dip"   
         android:paddingLeft="12dip">  
         <ImageView   
               android:layout_width="wrap_content"   
               android:id="@+id/itemImage" android:layout_height="fill_parent">   
         </ImageView>  
         <TextView   
               android:text="TextView01"   
               android:layout_height="wrap_content"   
               android:layout_width="fill_parent"   
               android:id="@+id/itemTitle" android:layout_toRightOf="@+id/itemImage" android:textSize="20dip">  
         </TextView>  
         <TextView   
               android:text="TextView02"   
               android:layout_height="wrap_content"   
               android:layout_width="fill_parent"   
               android:id="@+id/itemText" android:layout_toRightOf="@+id/itemImage" android:layout_below="@+id/itemTitle">  
         </TextView>  
</RelativeLayout> 

//代码依次:

import android.app.Activity;
import android.os.Bundle;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnCreateContextMenuListener;
import android.widget.ListView;

import com.ishow.androiddemo.adapter.ListViewAdapter;

public class MainActivity extends Activity {

	private ListView listview;
	private String[] titles = { "春", "夏", "秋", "冬" };
	private String[] texts = { "春天桃花开", "夏天梨花开", "秋天菊花开", "冬天梅花开" };
	private int[] resIds = { R.drawable.ic_launcher, R.drawable.ic_launcher,
			R.drawable.ic_launcher, R.drawable.ic_launcher };

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		setTitle("BaseAdapter for Listview!");
		listview = (ListView) findViewById(R.id.users);
		listview.setAdapter(new ListViewAdapter(this, titles, texts, resIds));
		listview.setOnCreateContextMenuListener(new OnCreateContextMenuListener() {
			@Override
			public void onCreateContextMenu(ContextMenu menu, View v,
					ContextMenuInfo menuInfo) {
				menu.setHeaderTitle("长按菜单-ContextMenu");
				menu.add(0, 0, 0, "弹出长按菜单0");
				menu.add(0, 1, 0, "弹出长按菜单1");
			}
		});
	}

	@Override
	public boolean onContextItemSelected(MenuItem item) {
		setTitle("点击了长按菜单里面的第" + item.getItemId() + "个项目");
		return super.onContextItemSelected(item);
	}

}

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;

import com.ishow.androiddemo.R;
import com.ishow.androiddemo.viewholder.ListViewViewHolder;

public class ListViewAdapter extends BaseAdapter {

	private Context context;
	private String[] itemTitles;
	private String[] itemTexts;
	private int[] itemImageRes;

	public ListViewAdapter(Context context,String[] itemTitles, String[] itemTexts,
			int[] itemImageRes) {
		this.context = context;
		this.itemTitles = itemTitles;
		this.itemTexts = itemTexts;
		this.itemImageRes = itemImageRes;
	}

	@Override
	public View getView(int position, View convertView, ViewGroup parent) {
			View itemView = null;
			ListViewViewHolder viewHolder = null;
			if (convertView != null) {
				itemView = convertView;
			} else {
				itemView = inflateView(itemTitles[position],
						itemTexts[position], itemImageRes[position]);
			}
			viewHolder = (ListViewViewHolder) itemView.getTag();
			viewHolder.fillFromItem(itemTitles[position],
					itemTexts[position], itemImageRes[position]);
			return itemView;
	}
	
	private View inflateView(String strTitle, String strText, int resId) {
		View itemView = null;
		itemView = LayoutInflater.from(context).inflate(
				R.layout.list_activity_main_item, null);
		itemView.setTag(new ListViewViewHolder(itemView));
		return itemView;
	}

	//	必须
	@Override
	public int getCount() {
		return itemTitles.length;
	}

	@Override
	public Object getItem(int position) {
		return null;
	}

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

}

import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;

import com.ishow.androiddemo.R;

public class ListViewViewHolder {
	View view;
	String itemTitle;
	String itemText;
	int itemImage;

	TextView title;
	TextView text;
	ImageView image;

	public ListViewViewHolder(View view) {
		this.view = view;
		initUI();
	}

	public void initUI() {
		title = (TextView) view.findViewById(R.id.itemTitle);
		text = (TextView) view.findViewById(R.id.itemText);
		image = (ImageView) view.findViewById(R.id.itemImage);
	}

	public void fillFromItem(String itemTitle, String itemText, int itemImage) {
		title.setText(itemTitle);
		text.setText(itemText);
		image.setBackgroundResource(itemImage);
	}
}

抱歉!评论已关闭.