java视图扩展_java – 使用group和child复选框创建可扩展列表视图

我想创建一个可扩展的列表视图,其中包含组中的复选框以及子项.我想要的是,用户可以检查组以便选择组中的所有孩子,或者用户可以选择可扩展列表视图下的特定项目.

这个概念在我们的asp.net网站上作为树视图运行.我正在附加正在运行的网站的一些屏幕:

Treeview与未展开的组

选择完整组的Treeview

树视图与特定儿童在组下选择

主要课程:

公共类MainActivity扩展Activity {

ExpandableListAdapter listAdapter;

ExpandableListView expListView;

List listDataHeader;

HashMap> listDataChild;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

// get the listview

expListView = (ExpandableListView) findViewById(R.id.lvExp);

// preparing list data

prepareListData();

listAdapter = new ExpandableListAdapter(this, listDataHeader, listDataChild);

// setting list adapter

expListView.setAdapter(listAdapter);

// Listview Group click listener

expListView.setOnGroupClickListener(new OnGroupClickListener() {

@Override

public boolean onGroupClick(ExpandableListView parent, View v,

int groupPosition, long id) {

// Toast.makeText(getApplicationContext(),

// "Group Clicked " + listDataHeader.get(groupPosition),

// Toast.LENGTH_SHORT).show();

return false;

}

});

// Listview Group expanded listener

expListView.setOnGroupExpandListener(new OnGroupExpandListener() {

@Override

public void onGroupExpand(int groupPosition) {

Toast.makeText(getApplicationContext(),

listDataHeader.get(groupPosition) + " Expanded",

Toast.LENGTH_SHORT).show();

}

});

// Listview Group collasped listener

expListView.setOnGroupCollapseListener(new OnGroupCollapseListener() {

@Override

public void onGroupCollapse(int groupPosition) {

Toast.makeText(getApplicationContext(),

listDataHeader.get(groupPosition) + " Collapsed",

Toast.LENGTH_SHORT).show();

}

});

// Listview on child click listener

expListView.setOnChildClickListener(new OnChildClickListener() {

@Override

public boolean onChildClick(ExpandableListView parent, View v,

int groupPosition, int childPosition, long id) {

// TODO Auto-generated method stub

Toast.makeText(

getApplicationContext(),

listDataHeader.get(groupPosition)

+ " : "

+ listDataChild.get(

listDataHeader.get(groupPosition)).get(

childPosition), Toast.LENGTH_SHORT)

.show();

return false;

}

});

}

/*

* Preparing the list data

*/

private void prepareListData() {

listDataHeader = new ArrayList();

listDataChild = new HashMap>();

// Adding child data

listDataHeader.add("Top 250");

listDataHeader.add("Now Showing");

listDataHeader.add("Coming Soon..");

// Adding child data

List top250 = new ArrayList();

top250.add("The Shawshank Redemption");

top250.add("The Godfather");

top250.add("The Godfather: Part II");

top250.add("Pulp Fiction");

top250.add("The Good, the Bad and the Ugly");

top250.add("The Dark Knight");

top250.add("12 Angry Men");

List nowShowing = new ArrayList();

nowShowing.add("The Conjuring");

nowShowing.add("Despicable Me 2");

nowShowing.add("Turbo");

nowShowing.add("Grown Ups 2");

nowShowing.add("Red 2");

nowShowing.add("The Wolverine");

List comingSoon = new ArrayList();

comingSoon.add("2 Guns");

comingSoon.add("The Smurfs 2");

comingSoon.add("The Spectacular Now");

comingSoon.add("The Canyons");

comingSoon.add("Europa Report");

listDataChild.put(listDataHeader.get(0), top250); // Header, Child data

listDataChild.put(listDataHeader.get(1), nowShowing);

listDataChild.put(listDataHeader.get(2), comingSoon);

}

}

ExpandableListAdapter:

public class ExpandableListAdapter extends BaseExpandableListAdapter {

private Context _context;

private List _listDataHeader; // header titles

// child data in format of header title, child title

private HashMap> _listDataChild;

public ExpandableListAdapter(Context context, List listDataHeader,

HashMap> listChildData) {

this._context = context;

this._listDataHeader = listDataHeader;

this._listDataChild = listChildData;

}

@Override

public Object getChild(int groupPosition, int childPosititon) {

return this._listDataChild.get(this._listDataHeader.get(groupPosition))

.get(childPosititon);

}

@Override

public long getChildId(int groupPosition, int childPosition) {

return childPosition;

}

@Override

public View getChildView(int groupPosition, final int childPosition,

boolean isLastChild, View convertView, ViewGroup parent) {

final String childText = (String) getChild(groupPosition, childPosition);

if (convertView == null) {

LayoutInflater infalInflater = (LayoutInflater) this._context

.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

convertView = infalInflater.inflate(R.layout.list_item, null);

}

TextView txtListChild = (TextView) convertView

.findViewById(R.id.lblListItem);

txtListChild.setText(childText);

return convertView;

}

@Override

public int getChildrenCount(int groupPosition) {

return this._listDataChild.get(this._listDataHeader.get(groupPosition))

.size();

}

@Override

public Object getGroup(int groupPosition) {

return this._listDataHeader.get(groupPosition);

}

@Override

public int getGroupCount() {

return this._listDataHeader.size();

}

@Override

public long getGroupId(int groupPosition) {

return groupPosition;

}

@Override

public View getGroupView(int groupPosition, boolean isExpanded,

View convertView, ViewGroup parent) {

String headerTitle = (String) getGroup(groupPosition);

if (convertView == null) {

LayoutInflater infalInflater = (LayoutInflater) this._context

.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

convertView = infalInflater.inflate(R.layout.list_group, null);

}

TextView lblListHeader = (TextView) convertView

.findViewById(R.id.lblListHeader);

lblListHeader.setTypeface(null, Typeface.BOLD);

lblListHeader.setText(headerTitle);

return convertView;

}

@Override

public boolean hasStableIds() {

return false;

}

@Override

public boolean isChildSelectable(int groupPosition, int childPosition) {

return true;

}

}

activity_main.xml:

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:orientation="vertical"

android:background="#f4f4f4" >

android:id="@+id/lvExp"

android:layout_height="match_parent"

android:layout_width="match_parent"

android:cacheColorHint="#00000000"/>

list_group.xml:

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:orientation="vertical"

android:padding="8dp"

android:background="#000000">

android:id="@+id/lblListHeader"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:paddingLeft="?android:attr/expandableListPreferredItemPaddingLeft"

android:textSize="17dp"

android:textColor="#f9f93d" />

list_item.xml:

android:layout_width="match_parent"

android:layout_height="55dip"

android:orientation="vertical" >

android:id="@+id/lblListItem"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:textSize="17dip"

android:paddingTop="5dp"

android:paddingBottom="5dp"

android:textColor="#000000"

android:paddingLeft="?android:attr/expandableListPreferredChildPaddingLeft" />

我已经创建了一个简单的可扩展列表视图,现在我想要包含复选框或任何其他控件以满足我的要求.我用google搜索了一个sutaible教程,但我找不到一个.如果可能的话,请帮我一个.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
智慧校园整体解决方案是响应国家教育信息化政策,结合教育改革和技术创新的产物。该方案以物联网、大数据、人工智能和移动互联技术为基础,旨在打造一个安全、高效、互动且环保的教育环境。方案强调从数字化校园向智慧校园的转变,通过自动数据采集、智能分析和按需服务,实现校园业务的智能化管理。 方案的总体设计原则包括应用至上、分层设计和互联互通,确保系统能够满足不同用户角色的需求,并实现数据和资源的整合与共享。框架设计涵盖了校园安全、管理、教学、环境等多个方面,构建了一个全面的校园应用生态系统。这包括智慧安全系统、校园身份识别、智能排课及选课系统、智慧学习系统、精品录播教室方案等,以支持个性化学习和教学评估。 建设内容突出了智慧安全和智慧管理的重要性。智慧安全管理通过分布式录播系统和紧急预案一键启动功能,增强校园安全预警和事件响应能力。智慧管理系统则利用物联网技术,实现人员和设备的智能管理,提高校园运营效率。 智慧教学部分,方案提供了智慧学习系统和精品录播教室方案,支持专业级学习硬件和智能化网络管理,促进个性化学习和教学资源的高效利用。同时,教学质量评估中心和资源应用平台的建设,旨在提升教学评估的科学性和教育资源的共享性。 智慧环境建设则侧重于基于物联网的设备管理,通过智慧教室管理系统实现教室环境的智能控制和能效管理,打造绿色、节能的校园环境。电子班牌和校园信息发布系统的建设,将作为智慧校园的核心和入口,提供教务、一卡通、图书馆等系统的集成信息。 总体而言,智慧校园整体解决方案通过集成先进技术,不仅提升了校园的信息化水平,而且优化了教学和管理流程,为学生、教师和家长提供了更加便捷、个性化的教育体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值