类似于选择城市相同的首字母放在一起的效果
来源:互联网 发布:数据库开发与dba 编辑:程序博客网 时间:2024/05/23 07:24
1.类似效果如下:
2.实现效果如下(时间有限完成的一般):
3.上代码
3.1 ListViewTest.java
[java] view plaincopyprint?
import java.util.ArrayList;import java.util.HashMap;import android.app.Activity;import android.os.Bundle;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.LinearLayout;import android.widget.ListView;import android.widget.TextView;public class ListViewTest extends Activity{private ListView list;private ArrayList<HashMap<String, String>> data = new ArrayList<HashMap<String,String>>();@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.listview);init();}private void init(){list = (ListView)findViewById(R.id.listView1);/** * 获取数据时应该把相同flag的数据放在一起 * 不同的放在前面 */HashMap< String, String> map;map = new HashMap<String, String>();map.put("name", "测试数据A");map.put("flag", "flag");data.add(map);map = new HashMap<String, String>();map.put("name", "测试数据B");map.put("flag", "flag");data.add(map);map = new HashMap<String, String>();map.put("name", "测试数据C");map.put("flag", "flag");data.add(map);map = new HashMap<String, String>();map.put("name", "测试数据D");map.put("flag", "flag");data.add(map);for(int i = 0; i<20; i++){map = new HashMap<String, String>();map.put("name", "测试数据"+i);map.put("flag", "flag"+i/5);data.add(map);}int length = data.size();String flag = "";for(int i=0; i<length; i++){//flag 处理if((i<length-1)&&!flag.equals(data.get(i+1).get("flag").replace("flag", ""))){flag = data.get(i+1).get("flag").replace("flag", "");data.get(i).put("flag", flag);}else{data.get(i).put("flag", "flag");}}list.setCacheColorHint(0);list.setAdapter(new Adapter());}class Adapter extends BaseAdapter{@Overridepublic int getCount() {return data.size();}@Overridepublic Object getItem(int position) {return position;}@Overridepublic long getItemId(int position) {return position;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {LayoutInflater inflater = (LayoutInflater)getSystemService(LAYOUT_INFLATER_SERVICE); View view = inflater.inflate(R.layout.listview_item, null);TextView name = (TextView)view.findViewById(R.id.name);name.setText(data.get(position).get("name"));if(!"flag".equals(data.get(position).get("flag"))){TextView flag_name = (TextView) view.findViewById(R.id.flag_name);TextView flag = (TextView) view.findViewById(R.id.flag);LinearLayout line = (LinearLayout) view.findViewById(R.id.line);flag_name.setText(data.get(position).get("flag"));flag.setText(data.get(position).get("flag").replace("flag", ""));line.setVisibility(View.VISIBLE);flag_name.setVisibility(View.VISIBLE);flag.setVisibility(View.VISIBLE);}return view;}}}
3.2 listview.xml
[java] view plaincopyprint?
<?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:orientation="vertical" > <ListView android:id="@+id/listView1" android:layout_width="match_parent" android:layout_height="wrap_content" > </ListView></LinearLayout>
3.3listview_item.xml
[java] view plaincopyprint?
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="100dip" android:background="#ffffff" android:orientation="horizontal" > <TextView android:id="@+id/name" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:text="name" /> <TextView android:id="@+id/flag_name" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/name" android:text="flag_name" android:visibility="invisible" /> <TextView android:id="@+id/flag" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/name" android:text="flag" android:layout_alignParentRight="true" android:visibility="invisible"/> <LinearLayout android:id="@+id/line" android:layout_width="fill_parent" android:layout_height="2dip" android:layout_alignParentBottom="true" android:background="#ff0000" android:visibility="invisible" > </LinearLayout></RelativeLayout>
这只是个demo如有其它需求可以根据这个思路 自己修改-.-。
- 类似于选择城市相同的首字母放在一起的效果
- 类似于铁道部12306的城市选择框的实现
- TableVIew实现类似于电话本的首字母索引
- UITableVIew实现类似于电话本的首字母索引
- UITableVIew实现类似于电话本的首字母索引
- 嵌套Dictionary中相同value放在一起
- 如何做一个级联效果的,城市选择插件
- 根据城市名称的首字母,将城市分类
- Python匹配相同首字母的名字对
- array数组扩展方法二、-- 数组中的对象元素进行归类,参数值相同的对象放在一起,以数组第一个元素为准
- 导入程序 将最后的消息放在一起
- ACDSEE中,把两张图片放在一起的步骤
- 将预置的JAVA应用与JAVA Setting放在一起
- frame添加menu和添加contentpane的方法,放在一起
- 城市选择js效果
- 让一个字段相同的,把另一个字段拼接在一起
- 数据组合?将id相同的人员姓名组合在一起
- Oracle 分组内排序 字段相同的排在一起显示
- ALSA(lib和util)交叉编译与测试
- 对字符串HELL0_HULU中的字符进行二进制编码,使得字符串的编码长度尽可能短,最短长度为?
- CSDN高校俱乐部招募公告
- oracle复杂查询练习题
- Tika
- 类似于选择城市相同的首字母放在一起的效果
- 人脸识别网上资源列表(装载)
- java实现简单的单点登录
- 不同风格的游戏技术人 - Game Developer stereotypes
- 表的数据插入相关操作(identity,临时表,获取表列)
- scrollTo vs scrollBy
- 数据库时间类型
- 北京多数受访者称长假高速路拥堵并非因免费-长假-拥堵-高速免费
- iOS Nav+TabBar下的self.title,self.navigationItem.title,self.tabBarItem.title区别和联系