点击或选中ListView中的一项后,使item背景改变,失去焦点同样显示选中的背景,重新选中另外一项才刷新;
在Adapter中配置:
- public class MyAdapter extends BaseAdapter{
-
- int mSelect = 0;
-
- ......
-
- public void changeSelected(int positon){
- if(positon != mSelect){
- mSelect = positon;
- notifyDataSetChanged();
- }
- }
-
-
-
- public View getView(int position, View convertView, ViewGroup parent) {
-
- LayoutInflater factory = LayoutInflater.from(context);
- View v = (View) factory.inflate(R.layout.list_item, null);
- TextView tv = (TextView) v.findViewById(R.id.Item_tv);
- tv.setText("test");
-
- if(mSelect==position){
- v.setBackgroundResource(R.drawable.fc_bg);
- }else{
- v.setBackgroundResource(R.drawable.bg);
- }
-
- return v;
- }
-
- }
配置好了之后,下面就是应用:
- ...........
-
- mAdapter = new MyAdapter(...);
-
- myList.setAdapter(mAdapter);
-
-
-
- myList.setOnItemClickListener(new OnItemClickListener() {
-
- @Override
- public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
- mAdapter.changeSelected(position);
-
- }......}
-
-
-
- myList.setOnItemSelectedListener(new OnItemSelectedListener() {
-
- @Override
- public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
- mAdapter.changeSelected(position);
-
- }......}
-------------------------------------------------------------------------------------
监听view获得焦点或按下等状态的背景,可以用selector;
在res--drawable中配置样式文件,如button_style.xml
- <?xml version="1.0" encoding="utf-8"?>
- <selector xmlns:android="http://schemas.android.com/apk/res/android">
- <item android:state_pressed="true" android:drawable="@drawable/btn_bg_fc" />
- <item android:state_focused="true" android:drawable="@drawable/btn_bg_fc" />
- <item android:state_selected="true" android:drawable="@drawable/btn_bg_fc" />
- <item android:drawable="@drawable/btn_bg" />
- </selector>
用在Listview,gridview中
<ListView
......
android:listSelector="@drawable/button_style"
......> </ListView>
用于其他View,如Button,textview等
android:background="@drawable/button_style"
原文链接:http://blog.csdn.net/only_tan/article/details/40110993