一、首先创建listview的item布局文件item_list.xml,内容如下。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/item_name"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textColor="#000000"
android:layout_weight="1"
android:gravity="center"
android:minHeight="55dp"
android:textSize="25sp" />
</LinearLayout>
二、在自己界面中放置Listview控件。定义如下:
<ListView
android:id="@+id/select_door_name"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_above="@id/led_open"
android:layout_alignParentTop="true"
android:cacheColorHint="#00000000"
android:fadeScrollbars="false"
android:focusable="true"
android:focusableInTouchMode="true"
android:background="#00000000"
>
</ListView>
三、为listview设计一个adapter,取名为DoorSelectListAdapter,具体如下:
package com.beition.welcomewindow;
import java.util.ArrayList;
import android.content.Context;
import android.graphics.Color;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;
import com.beition.BTLock.R;
public class DoorSelectListAdapter extends BaseAdapter
{
private Context context;
private ArrayList<String> testList;
private int selectedIndex;
private int selectedColor = Color.parseColor("#ffcc99");
public DoorSelectListAdapter(Context ctx, ArrayList<String> testList)
{
this.context = ctx;
this.testList = testList;
selectedIndex = -1;
}
public void setSelectedIndex(int ind)
{
selectedIndex = ind;
notifyDataSetChanged();
}
@Override
public int getCount()
{
return testList.size();
}
@Override
public Object getItem(int position)
{
return testList.get(position);
}
@Override
public long getItemId(int position)
{
return position;
}
private class ViewHolder
{
TextView tv;
}
@Override
public View getView(int position, View convertView, ViewGroup parent)
{
View vi = convertView;
ViewHolder holder;
if(convertView == null)
{
//其中R.layout.item_list为listview的item的布局文件,定义如一中所述
vi = LayoutInflater.from(context).inflate(R.layout.item_list, null);
holder = new ViewHolder();
//其中R.id.item_name为listview的Item的ID
holder.tv = (TextView) vi.findViewById(R.id.item_name);
vi.setTag(holder);
}
else
{
holder = (ViewHolder) vi.getTag();
}
if(selectedIndex!= -1 && position == selectedIndex)
{
holder.tv.setBackgroundColor(Color.RED);
}
else
{
holder.tv.setBackgroundColor(selectedColor);
}
holder.tv.setText(testList.get(position).toString());
return vi;
}
}
四、new一个自定义的adapter对象,如下
private DoorSelectListAdapter selectDoorNameAdapter;
selectDoorNameAdapter = new DoorSelectListAdapter(this,storeDoorInf);
五、对listview传递adapter对象,并设置按下的监听器
private ListView select_door_nameList;
select_door_nameList = (ListView)this.findViewById(R.id.select_door_name);
select_door_nameList.setAdapter(selectDoorNameAdapter);
select_door_nameList.setOnItemClickListener(selectDoorNameClickListner);
//添加几个数据
storeDoorInf.add("门锁1");
storeDoorInf.add("门锁2");
storeDoorInf.add("门锁3");
storeDoorInf.add("门锁4");
selectDoorNameAdapter.notifyDataSetChanged();
六、在listview的选中事件的监听器中高度选中的Item
OnItemClickListener selectDoorNameClickListner = new OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
// TODO Auto-generated method stub
selectDoorNameAdapter.setSelectedIndex(arg2);
}
};
实际效果如下: