listview设置不同背景图片并添加selector,listviewselector
投稿于 被查看 1041 次 评论:226
listview设置不同背景图片并添加selector,listviewselector
前段时间为了实现根据item不同的内容实现不同的背景色google了好久只找到了个隔行换色,通过自定义SimpleAdapter终于实现了此功能,但是定义了selector并没有触发点击效果。今天重新想了一遍终于把这个问题解决了。在自定义的getView里就给每个convertView定义它的背景色和selector。1.自定义SimpleAdapter
public class MySimpleAdapter extends BaseAdapter { private LayoutInflater mInflater; private List<HashMap<String, Object>> dataList; public MySimpleAdapter(Context context, List<HashMap<String, Object>> data) { mInflater = LayoutInflater.from(context); this.dataList = data; } @Override public int getCount() { return dataList.size(); } @Override public Object getItem(int position) { return position; } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder; if (convertView == null) { convertView = mInflater.inflate(R.layout.color_list_item, null); holder = new ViewHolder(); holder.blue = (TextView)convertView.findViewById(R.id.blue_item); holder.red = (TextView)convertView.findViewById(R.id.red_item); holder.green = (TextView)convertView.findViewById(R.id.green_item); holder.yellow = (TextView)convertView.findViewById(R.id.yellow_item); convertView.setTag(holder); } else { holder = (ViewHolder)convertView.getTag(); } holder.blue.setText((CharSequence)dataList.get(position).get("blue")); holder.red.setText((CharSequence)dataList.get(position).get("red")); holder.green.setText((CharSequence)dataList.get(position).get("green")); holder.yellow.setText((CharSequence)dataList.get(position).get("yellow")); if ("blue".equals(dataList.get(position).get("status").toString())) { convertView.setBackgroundResource(R.drawable.item_chang_blue); } else if ("red".equals(dataList.get(position).get("status").toString())) { convertView.setBackgroundResource(R.drawable.item_chang_red); } else if ("green".equals(dataList.get(position).get("status").toString())) { convertView.setBackgroundResource(R.drawable.flightinfo_item_chang_green); } else if ("yellow".equals(dataList.get(position).get("status").toString())) { convertView.setBackgroundResource(R.drawable.flightinfo_item_chang_yellow); } return convertView; } @Override public void notifyDataSetChanged() { super.notifyDataSetChanged(); } class ViewHolder { TextView blue; TextView red; TextView green; TextView yellow; } }
2.选择器item_chang_blue.xml 其他同理
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <!-- 非触摸模式下获得焦点并单击时的背景图片 --> <item android:state_focused="true" android:state_pressed="true" android:drawable= "@drawable/list_item_pressed"/> <!-- 触摸模式下单击时的背景图片 --> <item android:state_focused="false" android:state_pressed="true" android:drawable="@drawable/list_item_pressed" /> <!--选中时的图片背景 --> <item android:state_selected="true" android:drawable="@drawable/list_item_pressed"/> <!--获得焦点时的图片背景 --> <item android:state_focused="true" android:drawable="@drawable/list_item_pressed"/> <!--默认背景 --> <item android:drawable="@drawable/status_blue" /> </selector>
用户评论