Listview的点击效果

这里面主要有两点需要注意一个:1、lv.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);//一定要设置这个属性,否则ListView不会刷新;2、就是定义一个int的标记由于记录被点击listview的位置的id然后不断更新刷新listview的ui


package com.hipikids.listviewlightdemo;

import android.app.Activity;
import android.content.Context;
import android.graphics.Color;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.TextView;

public class MainActivity extends Activity {
	private ListView lv;
	private int cur_pos = -1;// 当前显示的一行

	private String[] items_text = { "选项一", "选项二", "选项三", "选项四", "选项五" };
	private int[] items_img = { R.drawable.ic_launcher, 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);
		lv = (ListView)findViewById(R.id.szh);
		final ListAdapter adapter = new ListAdapter(this);
		lv.setAdapter(adapter);
		lv.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);//一定要设置这个属性,否则ListView不会刷新
		lv.setOnItemClickListener(new OnItemClickListener() {

			@Override
			public void onItemClick(AdapterView<?> arg0, View arg1, int position,
					long arg3) {
				// TODO Auto-generated method stub
				cur_pos = position;
			}
		});
		
	}
	
	public class ListAdapter extends BaseAdapter{
		LinearLayout ll;
		Context context;
		public ListAdapter(Context context) {
			this.context = context;
		}

		@Override
		public int getCount() {
			// TODO Auto-generated method stub
			return items_text.length;
		}

		@Override
		public Object getItem(int position) {
			// TODO Auto-generated method stub
			return items_text[position];
		}

		@Override
		public long getItemId(int position) {
			// TODO Auto-generated method stub
			return position;
		}

		@Override
		public View getView(int position, View convertView, ViewGroup parent) {
			// TODO Auto-generated method stub
			convertView =  LinearLayout.inflate(context, R.layout.list_item, null);
			ImageView iv = (ImageView)convertView.findViewById(R.id.list_child_img);
			TextView tv = (TextView)convertView.findViewById(R.id.list_child_text);
			iv.setBackgroundResource(items_img[position]);
			tv.setText(items_text[position]);
			System.out.println("============position=============="+position);
			if (position == cur_pos) {// 如果当前的行就是ListView中选中的一行,就更改显示样式
				System.out.println("============我是唯一的=============="+position);
				convertView.setBackgroundColor(Color.LTGRAY);// 更改整行的背景色
				tv.setTextColor(Color.RED);// 更改字体颜色
			}
			return convertView;
		}
			
	}



}


Listview的点击效果

你可能感兴趣的:(Listview的点击效果)