为网友们分享了相关的编程文章,网友冷之槐根据主题投稿了本篇教程内容,涉及到ExpandListView、下拉列表、ExpandListView下拉列表相关内容,已被311网友关注,如果对知识点想更进一步了解可以在下方电子资料中获取。
ExpandListView下拉列表
ExpandListView实现下拉列表案例,供大家参考,具体内容如下
使用方式与ListView类似,是ListView的一个延申,Group为TextView,子元素为ListView。
效果图:
代码:
实体类:
Group.java
public class Group { private String gName; public Group() { } public Group(String gName) { this.gName = gName; } public String getName() { return gName; } public void setName(String gName) { this.gName = gName; } }
Item.java
public class Item { private int iId; private String iName; public Item() { } public Item(int iId, String iName) { this.iId = iId; this.iName = iName; } public int getId() { return iId; } public String getName() { return iName; } public void setId(int iId) { this.iId = iId; } public void setName(String iName) { this.iName = iName; } }
自定义适配器:ExpandableListViewAdapter.java
public class ExpandableListViewAdapter extends BaseExpandableListAdapter { private Context mContext; private ArrayListgroupList; private ArrayList > itemList; public ExpandableListViewAdapter(Context context, ArrayList gData, ArrayList > iData) { this.mContext = context; this.groupList = gData; this.itemList = iData; } //返回Group的个数 @Override public int getGroupCount() { return groupList.size(); } //返回某个Group对应的Item的个数 @Override public int getChildrenCount(int groupPosition) { return itemList.get(groupPosition).size(); } //返回某个Group对象 @Override public Object getGroup(int groupPosition) { return groupList.get(groupPosition); } //返回某个Item对象 @Override public Object getChild(int groupPosition, int childPosition) { return itemList.get(groupPosition).get(childPosition); } //返回Group的id @Override public long getGroupId(int groupPosition) { return groupPosition; } //返回Item的id @Override public long getChildId(int groupPosition, int childPosition) { return childPosition; } @Override public boolean hasStableIds() { return false; } //获取指定组处的组数据 @Override public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) { ViewHolderGroup holderGroup = null; if (convertView == null) { convertView = LayoutInflater.from(mContext).inflate(R.layout.item_exlist_group,parent,false); holderGroup = new ViewHolderGroup(); holderGroup.tv_name_group = convertView.findViewById(R.id.tv_group_name); convertView.setTag(holderGroup); }else { holderGroup = (ViewHolderGroup) convertView.getTag(); } holderGroup.tv_name_group.setText(groupList.get(groupPosition).getName()); return convertView; } //获取指定组的数据、指定子列表项处的子列表项数据 @Override public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) { ViewHolderItem holderItem = null; if (convertView == null) { convertView = LayoutInflater.from(mContext).inflate(R.layout.item_exlist_item,parent,false); holderItem = new ViewHolderItem(); holderItem.iv_img_icon = convertView.findViewById(R.id.img_icon); holderItem.tv_name_item = convertView.findViewById(R.id.tv_item_name); convertView.setTag(holderItem); }else { holderItem = (ViewHolderItem) convertView.getTag(); } holderItem.iv_img_icon.setImageResource(itemList.get(groupPosition).get(childPosition).getId()); holderItem.tv_name_item.setText(itemList.get(groupPosition).get(childPosition).getName()); return convertView; } //设置子列表是否可选中 @Override public boolean isChildSelectable(int groupPosition, int childPosition) { return true; } class ViewHolderGroup { TextView tv_name_group; } class ViewHolderItem { ImageView iv_img_icon; TextView tv_name_item; } }
主布局:ExpandableListViewActivity.java
public class ExpandableListViewActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_expandable_list_view); //View ExpandableListView exListView = findViewById(R.id.expand_list_person); //Model ArrayListgroupList = new ArrayList<>(); ArrayList > itemList = new ArrayList<>(); groupList.add(new Group("朋友")); groupList.add(new Group("同事")); groupList.add(new Group("陌生人")); //用来存放单个item,下面用三个不同的item集合存放对应分类的item ArrayList - items = new ArrayList<>(); //朋友 items.add(new Item(R.mipmap.img2, "小莉")); items.add(new Item(R.mipmap.img7, "小红")); items.add(new Item(R.mipmap.img8, "小美")); itemList.add(items); //同事 items = new ArrayList<>(); items.add(new Item(R.mipmap.img17, "小倩")); items.add(new Item(R.mipmap.img12, "小雯")); items.add(new Item(R.mipmap.img13, "小芳")); itemList.add(items); //陌生人 items = new ArrayList<>(); items.add(new Item(R.mipmap.img14, "小涵")); items.add(new Item(R.mipmap.img15, "小蕾")); items.add(new Item(R.mipmap.img16, "小雪")); itemList.add(items); ExpandableListViewAdapter adapter = new ExpandableListViewAdapter(this, groupList, itemList); exListView.setAdapter(adapter); //为下拉列表中子元素绑定点击事件 exListView.setOnChildClickListener(new ExpandableListView.OnChildClickListener() { @Override public boolean onChildClick(ExpandableListView parent, View v, int groupPosition, int childPosition, long id) { Toast.makeText(getApplicationContext(), "你点击了" + itemList.get(groupPosition).get(childPosition).getName(), Toast.LENGTH_SHORT).show(); return true; } }); } }
activity_expandable_list_view.xml
item_exlist_group.xml
item_exlist_item.xml
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持码农之家。