List View

1. List View Adapter

public class Adapter extends BaseAdapter {
	private LayoutInflater myInflater;
	private List<String> listData;
	private int selectedItem = -1;
	
	class Holder {
		private TextView text;
		private CheckBox checkBox;
	}
	
	public Adapter(Context context, List<String> listData) {
		super();
		myInflater = LayoutInflater.from(context);
		this.listData = listData;
	}
	
	public void setSelectedItem(int selectedItem) {
		this.selectedItem = selectedItem;
	}

	@Override
	public  int getCount(){
		return listData.size();
	}

	@Override
	public Object getItem(int position) {
		return listData.get(position);
	}

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

	@Override
	public View getView(int position, View convertView, ViewGroup parent) {
		
		final Holder holder;
		if(convertView == null) {
			holder = new Holder();
			convertView = myInflater.inflate(R.layout.layout_of_each_item_in_list_view, null);
			holder.text.findViewById(R.id.id_of_text_view);
			holder.checkBox.findViewById(R.id.id_if_check_box);
			convertView.setTag(holder);
		}
		else {
			holder = (Holder) convertView.getTag();
		}
		holder.text.setText(listData.get(position));

		// 按钮监听
		holder.checkBox.setOnCheckedChangeListener(new OnCheckedChangeListener() {

			@Override
			public void onCheckedChanged(CompoundButton checkBox, boolean isChecked) {
				if(checkBox.isChecked()) {
					Toast.makeText(context, "CheckBox is checked", Toast.LENGTH_SHORT).show();
				}
			}
		});
		
		// 选中变色
		if(position == selectedItem) {
			convertView.setBackgroundColor(Color.parseColor("#EAEAEA"));	
		}
		else {
			convertView.setBackgroundColor(Color.TRANSPARENT);
		}
		
		return convertView;
	}
}


2. List View点击事件

listView.setOnItemClickListener(new OnItemClickListener() {

			@Override
			public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
				
				adapter.setSelectedItem(position);
				adapter.notifyDataSetInvalidated();
	
			}
});	


3. List View布局

 <ListView
                android:id="@+id/id"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:cacheColorHint="@android:color/transparent"
                android:divider="#000000"
                android:dividerHeight="1dp"
                android:fastScrollEnabled="true"
                android:listSelector="@android:color/transparent" >
</ListView>


(1)其中,为了消除点击时出现的橘黄色背景,应该用:

 android:listSelector="@android:color/transparent"

(2)若List View的背景是图片,为了防止滚动背景变黑,应该用:

android:cacheColorHint="@android:color/transparent"

(3)为了防止List View的点击时间被按钮覆盖,应该在按钮中加入:

android:focusable="false"

4. 选中改变颜色的另一种方法

listView.setOnItemClickListener(new OnItemClickListener() {
 
            @Override
            public void onItemClick(AdapterView<?> parent, View view,
                    int position, long id) {
                View tag=(View)parent.getTag();
                if (tag != null)
                {
                    if (tag.getId()==id) return;
                     tag.setBackgroundColor(Color.RED);
                }
                view.setBackgroundColor(Color.TRANSPARENT);
                parent.setTag(view);
            }
});

5. SimpleAdapter的用法

private ListAdapter historyAdapter(List<PoiItem> list) {
	ArrayList<HashMap<String, Object>> data = new ArrayList<HashMap<String, Object>>();
	for(int i=list.size()-1; i>=0; i--) {
		HashMap<String, Object> map = new HashMap<String, Object>();
		map.put("text", list.get(i).getText());
		map.put("picture", R.drawable.go_btn);
		data.add(map);
	}
	// R.id.id_of_text_view 和 R.id.id_of_image_view 都在 R.layout.layout_of_simple_adapter里
	SimpleAdapter simpleAdapter = new SimpleAdapter(this, data, R.layout.layout_of_simple_adapter,
				new String[]{"text", "picture"}, new int[]{R.id.id_of_text_view, R.id.id_of_image_view});
		
	return simpleAdapter;
}





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值