筛选菜单
来源:互联网 发布:韩国进出口贸易数据 编辑:程序博客网 时间:2024/06/05 06:39
有时候,会遇到筛选菜单的需求,github上有一篇star比较多的,传送门:https://github.com/dongjunkun/DropDownMenu,下载了下来玩了玩,感觉蛮不错的~ 具体的不多说了 ,自己去看吧!
xml中使用:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" xmlns:app="http://schemas.android.com/apk/res-auto" android:orientation="vertical" tools:context=".activity.MainActivity"> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:text="详情页" android:padding="10dp" android:textColor="@android:color/white" android:background="#cccccc" android:gravity="center_horizontal"/> <com.yyydjk.library.DropDownMenu android:id="@+id/dropDownMenu" android:layout_width="match_parent" android:layout_height="match_parent" app:ddmenuTextSize="14sp" app:ddtextUnselectedColor="@color/drop_down_unselected" app:ddtextSelectedColor="@color/drop_down_selected" app:ddmenuSelectedIcon="@drawable/drop_down_selected_icon" app:ddmenuUnselectedIcon="@drawable/drop_down_unselected_icon"/></LinearLayout>
代码实现:
package com.example.lenovo.demo.activity;import android.app.Activity;import android.os.Bundle;import android.view.LayoutInflater;import android.view.View;import android.widget.AdapterView;import android.widget.LinearLayout;import android.widget.ListView;import com.example.lenovo.demo.R;import com.example.lenovo.demo.adapter.GirdDropDownAdapter;import com.example.lenovo.demo.adapter.ListDropDownAdapter;import com.yyydjk.library.DropDownMenu;import java.util.ArrayList;import java.util.Arrays;import java.util.List;public class MainActivity extends Activity { private DropDownMenu mDropDownMenu; private List<View> popupViews; private ListView cityView;//城市列表 private ListView ageView;//年龄列表 private GirdDropDownAdapter cityAdapter;//城市数据适配器 private ListDropDownAdapter ageAdapter;//年龄数据适配器 private String citys[] = {"不限", "武汉", "北京", "上海", "成都", "广州", "深圳", "重庆", "天津", "西安", "南京", "杭州"}; private String ages[] = {"不限", "18岁以下", "18-22岁", "23-26岁", "27-35岁", "35岁以上"}; private String headers[] = {"城市","年龄"}; private LinearLayout contentView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mDropDownMenu = (DropDownMenu) findViewById(R.id.dropDownMenu); initView(); popupViews.add(cityView); popupViews.add(ageView); cityAdapter = new GirdDropDownAdapter(this, Arrays.asList(citys)); ageAdapter = new ListDropDownAdapter(this, Arrays.asList(ages)); cityView.setAdapter(cityAdapter); ageView.setAdapter(ageAdapter); mDropDownMenu.setDropDownMenu(Arrays.asList(headers), popupViews, contentView); cityView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { cityAdapter.setCheckItem(position); mDropDownMenu.setTabText(position == 0 ? headers[0] : citys[position]); mDropDownMenu.closeMenu(); } }); ageView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { ageAdapter.setCheckItem(position); mDropDownMenu.setTabText(position == 0 ? headers[1] : ages[position]); mDropDownMenu.closeMenu(); } }); } private void initView() { //初始化城市列表数据 popupViews = new ArrayList<>(); cityView = new ListView(this); cityView.setDividerHeight(1);//设置分割线高度 单位px //初始化年龄列表数据 ageView = new ListView(this); ageView.setDividerHeight(1); contentView = (LinearLayout) LayoutInflater.from(MainActivity.this).inflate(R.layout.contentview,null); } @Override public void onBackPressed() { //按返回键先关闭菜单,再退出Activity if (mDropDownMenu.isShowing()) { mDropDownMenu.closeMenu(); }else { super.onBackPressed(); } }}
————————————————————————————————————————————————————————————————
2个数据适配器;
package com.example.lenovo.demo.adapter;import android.content.Context;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.TextView;import com.example.lenovo.demo.R;import java.util.List;/** * Created by lenovo on 2016/9/12. **/public class GirdDropDownAdapter extends BaseAdapter { private Context context; private List<String> list; private int checkItemPosition = 0; public void setCheckItem(int position) { checkItemPosition = position; notifyDataSetChanged(); } public GirdDropDownAdapter(Context context, List<String> list) { this.context = context; this.list = list; } @Override public int getCount() { return list.size(); } @Override public Object getItem(int position) { return null; } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder viewHolder; if (convertView != null) { viewHolder = (ViewHolder) convertView.getTag(); } else { convertView = LayoutInflater.from(context).inflate(R.layout.item_list_drop_down, null); viewHolder = new ViewHolder(); viewHolder.mText = (TextView) convertView.findViewById(R.id.text); convertView.setTag(viewHolder); } fillValue(position, viewHolder); return convertView; } private void fillValue(int position, ViewHolder viewHolder) { viewHolder.mText.setText(list.get(position)); if (checkItemPosition != -1) { if (checkItemPosition == position) { viewHolder.mText.setTextColor(context.getResources().getColor(R.color.drop_down_selected)); viewHolder.mText.setCompoundDrawablesWithIntrinsicBounds(null, null, context.getResources().getDrawable(R.drawable.drop_down_checked), null); } else { viewHolder.mText.setTextColor(context.getResources().getColor(R.color.drop_down_unselected)); viewHolder.mText.setCompoundDrawablesWithIntrinsicBounds(null, null, null, null); } } } public class ViewHolder { private TextView mText; }}
package com.example.lenovo.demo.adapter;import android.content.Context;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.TextView;import com.example.lenovo.demo.R;import java.util.List;public class ListDropDownAdapter extends BaseAdapter { private Context context; private List<String> list; private int checkItemPosition = 0; public void setCheckItem(int position) { checkItemPosition = position; notifyDataSetChanged(); } public ListDropDownAdapter(Context context, List<String> list) { this.context = context; this.list = list; } @Override public int getCount() { return list.size(); } @Override public Object getItem(int position) { return null; } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder viewHolder; if (convertView != null) { viewHolder = (ViewHolder) convertView.getTag(); } else { convertView = LayoutInflater.from(context).inflate(R.layout.item_default_drop_down, null); viewHolder = new ViewHolder(); viewHolder.mText = (TextView) convertView.findViewById(R.id.text); convertView.setTag(viewHolder); } fillValue(position, viewHolder); return convertView; } private void fillValue(int position, ViewHolder viewHolder) { viewHolder.mText.setText(list.get(position)); if (checkItemPosition != -1) { if (checkItemPosition == position) { viewHolder.mText.setTextColor(context.getResources().getColor(R.color.drop_down_selected)); viewHolder.mText.setBackgroundResource(R.color.check_bg); } else { viewHolder.mText.setTextColor(context.getResources().getColor(R.color.drop_down_unselected)); viewHolder.mText.setBackgroundResource(R.color.white); } } } public class ViewHolder { private TextView mText; }}
————————————————————————————————————————————————————————————————
2个item布局都一样:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@color/white" android:orientation="vertical"> <TextView android:id="@+id/text" android:layout_width="match_parent" android:layout_height="wrap_content" android:paddingBottom="10dp" android:paddingLeft="25dp" android:paddingRight="25dp" android:paddingTop="10dp" /></LinearLayout>
0 0
- 筛选菜单
- 筛选菜单
- 高仿美团筛选菜单
- android筛选菜单实现
- Android仿美团筛选菜单
- Android 菜单筛选器
- zTree的菜单筛选
- Android三级联动筛选菜单
- 仿美团的下拉筛选菜单
- 449_实现筛选菜单
- 安卓实现多下拉筛选多条件筛选菜单多级筛选菜单
- 通过下拉菜单筛选GridPanel的数据
- jQuery商品搜索筛选导航菜单
- 用phpcms做多种条件筛选菜单
- android 多条件筛选菜单效果
- Android最牛逼的多条件筛选菜单
- 微信小程序下拉筛选菜单WXDropDownMenu组件
- Android最牛逼的多条件筛选菜单
- 升级debian版本到 jessie
- makefile 自动生成依赖
- Multi-column deep neural network for traffic sign classification
- Android WindowManager$BadTokenException 处理
- [3]-操作系统
- 筛选菜单
- dubbo学习及集成zookeeper集群部署
- Unity发布安卓包之后出现dll无法调用问题
- jQuery知识点简列
- GDB调试命令详解
- 解决jQuery和其他库的冲突
- sgu 298 差分约束(特定解)
- usbredir-0.7内容详解(三)
- VC 动态控制鼠标点击事件