【转载】Listview可以选择多行,点击选中行item字体颜色变化
2014-11-25 15:10
387 查看
界面是一个listview,初始字体均为红色,点击一行选中时为字体颜色为绿色,再次点击取消选中变为红色,可以同时选择多行记录 页面布局文件: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="#d5d3d6" android:orientation="vertical" > <LinearLayout android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_gravity="center" android:background="@drawable/choose_panel_background" android:orientation="vertical" > <ListView android:id="@+id/panellistview" android:layout_width="1064px" android:layout_height="380px" android:layout_gravity="center" android:cacheColorHint="#00000000" android:listSelector="#00000000" android:divider="#FFCC00"> </ListView> </LinearLayout> </LinearLayout> listitem布局文件: <?xml version="1.0" encoding="utf-8"?> <TableLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="1064px" android:layout_height="wrap_content" android:layout_gravity="center_horizontal"> <TableRow android:layout_width="1064px" android:layout_height="62px"> <View style="@style/list_item_cell_seperator_layout" /> <ImageView android:id="@+id/selection" android:layout_width="100px" android:layout_height="58px" android:gravity="center" /> <View style="@style/list_item_cell_seperator_layout" /> <TextView android:id="@+id/panel" style="@style/Panel_ListView_TextView_100px" /> <View style="@style/list_item_cell_seperator_layout" /> <TextView android:id="@+id/subpanel" style="@style/Panel_ListView_TextView_100px" /> <View style="@style/list_item_cell_seperator_layout" /> <TextView android:id="@+id/oneway" style="@style/Panel_ListView_TextView_150px" /> <View style="@style/list_item_cell_seperator_layout" /> <TextView android:id="@+id/functionalrole" style="@style/Panel_ListView_TextView_300px" /> <View style="@style/list_item_cell_seperator_layout" /> <TextView android:id="@+id/roledescription" style="@style/Panel_ListView_TextView_300px" /> <View style="@style/list_item_cell_seperator_layout" /> </TableRow> <View android:layout_height="2px" android:background="#008f7d" /> </TableLayout> activity文件: public class ChoosePanelActivity extends Activity { private ListView list; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.choose_panel); //关联layout里的listview list = (ListView) findViewById(R.id.panellistview); //生成动态数组,加入数据 ArrayList<HashMap<String, Object>> arraylist = new ArrayList<HashMap<String, Object>>(); for(int i=0;i<10;i++) { HashMap<String, Object> map = new HashMap<String, Object>(); map.put("panel", "45路"); map.put("subpanel", "45"); map.put("oneway", "45环形"); map.put("functionalrole", "线路主调"); map.put("roledescription", "线路主调-调度"); arraylist.add(map); } final SelectedAdapter adapter = new SelectedAdapter(this, arraylist); list.setAdapter(adapter); list.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);//设置为多选 list.setOnItemClickListener ( new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> adapterview, View v, int position, long id) { adapter.modifyStates(position);//根据点击的位置改变该行的选择状态 adapter.getView(position, v, list); adapter.notifyDataSetChanged(); } }); } 自己写的adapter: public class SelectedAdapter extends BaseAdapter{ private ArrayList<HashMap<String, Object>> data; private LayoutInflater layoutInflater; private List<Boolean> listselected;//用布尔型的list记录每一行的选中状态 public SelectedAdapter(Context context,ArrayList<HashMap<String, Object>> data) { this.data = data; this.layoutInflater = LayoutInflater.from(context); this.setListselected(new ArrayList<Boolean>(getCount())); for(int i=0;i<getCount();i++) getListselected().add(false);//初始为false,长度和listview一样 } public List<Boolean> getListselected() { return listselected; } public void setListselected(List<Boolean> listselected) { this.listselected = listselected; } @Override public int getCount() { return data.size(); } @Override public Object getItem(int position) { return data.get(position); } @Override public long getItemId(int position) { return position; } public void modifyStates(int position){ if(getListselected().get(position)==false){ getListselected().set(position, true);//如果相应position的记录是未被选中则设置为选中(true) notifyDataSetChanged(); }else{ getListselected().set(position, false);//否则相应position的记录是被选中则设置为未选中(false) notifyDataSetChanged();} } @Override public View getView(int position, View convertView, ViewGroup parent) { // TODO Auto-generated method stub ListItem item = null; if(convertView==null){ item = new ListItem(); // 获取组件布局 convertView = layoutInflater.inflate(R.layout.panellistview_list, null); item.selection = (ImageView) convertView.findViewById(R.id.selection); item.panel = (TextView) convertView.findViewById(R.id.panel); item.subpanel= (TextView) convertView.findViewById(R.id.subpanel); item.oneway= (TextView) convertView.findViewById(R.id.oneway); item.functionalrole= (TextView) convertView.findViewById(R.id.functionalrole); item.roledescription= (TextView) convertView.findViewById(R.id.roledescription); // 使用tag来存储数据 convertView.setTag(item); } else { item = (ListItem) convertView.getTag(); } // 绑定数据 item.panel.setText((String)data.get(position).get("panel")); item.subpanel.setText((String)data.get(position).get("subpanel")); item.oneway.setText((String)data.get(position).get("oneway")); item.functionalrole.setText((String)data.get(position).get("functionalrole")); item.roledescription.setText((String)data.get(position).get("roledescription")); if(getListselected().get(position)==false){//如果未被选中,设置为红色 item.selection.setImageResource(R.drawable.bus_icon_red); item.panel.setTextColor(Color.RED); item.oneway.setTextColor(Color.RED); item.subpanel.setTextColor(Color.RED); item.functionalrole.setTextColor(Color.RED); item.roledescription.setTextColor(Color.RED); }else{//如果被选中,设置为绿色 item.selection.setImageResource(R.drawable.bus_icon_green); item.panel.setTextColor(Color.GREEN); item.oneway.setTextColor(Color.GREEN); item.subpanel.setTextColor(Color.GREEN); item.functionalrole.setTextColor(Color.GREEN); item.roledescription.setTextColor(Color.GREEN);} return convertView; } }
相关文章推荐
- ListView Item 选中时 改变 TextView 的字体颜色
- gridview,点击选中一个或多个item,并改变item背景颜色,字体等
- 关于listview设置特定item是否可以被选中和点击的设置
- 点击listviewItem后,改变当前Item背景色和字体颜色,其他不变
- ListView中item点击的时候颜色变化
- listview 点击 item 字体变颜色
- 实现listview条目点击后改变item背景颜色和字体颜色并保留
- listview、GridView单点击效果,点击改变背景改变item字体颜色实现
- listView的item变化以及颜色选择,点其它控件默认对listView的选中项,排序
- 自定义Adapter,通过复写getView方法,实现ListView中item背景颜色变化
- ListView 点击Item 无颜色xml 中的设置
- 【android】listview改变选中行字体颜色
- 。窗体上有一个文本框(多行、且带有垂直滚动条)、一个标签(字体颜色红色、字号16)、一个按钮(该按钮被单击时,实现将文本框中选择文本复制至标签。
- ListView 点击Item的时候,改变文字颜色和背景色
- 自定义Adapter,通过复写getView方法,实现ListView中item背景颜色变化
- 去除或替换listview 默认的点击选中时的颜色
- ListView 点击Item的时候,改变文字颜色和背景色
- 实现栏目页在同级栏目列表中,点击一栏目,该栏目样式变化(背景/颜色/字体...),其他栏目样式不变。
- listview中点击item出现选择框
- android中设置ListView的选中的Item的背景颜色(附源码)