首页 > 编程知识 正文

定义多级列表怎么应用全文,word2010如何设置多级标题

时间:2023-05-04 12:52:59 阅读:173281 作者:2714

可能需要多级列表结构来显示内容。 谷歌只提供了listview单列表和可扩展listview辅助列表。 根据这些自行修改,可以实现简单的多级列表。

刚写的小demo,基于listview实现多级列表还不完善(参考网络思路,还有ExpandableListView )。

layout是一个简单的列表视图的layout。

一个属性类

class connection { booleanhaschild=false; //是否存在子节点int level=0; //级别,左缩进,0表示最高long id=-1; //标记-1表示errboolean isExpansion=false; //展开状态}

各item具有上述属性,判断其他的显示内容和ui状态。

根据这个属性,在adapter的getview方法中实现表示(没有追加view非空时的判断,效率很低)。

publicviewgetview(intposition,View convertView,ViewGroup parent ) layoutinflater=layoutinflater.from ) mcontinting connection c=mconnections.get (position; v.set tag (r.id.com pany _ list _ image,c.level ); v.set tag (r.id.com pany _ list _ text,position ); v.settag(r.id.companys_list,c ); textviewtext=(textview ) v.findviewbyid ) r.id.company_list_text ); text.settext(c.id ' ); imageviewimage=(imageview ) v.findviewbyid ) r.id.company_list_image; v.set padding (c.level * v.getpaddingleft ) *mLeftScan,0,0,0 ); if (! c.Haschild(image.setvisibility ) view.invisible; } else { image.set visibility (view.visible ); if(c.isexpansion ) image.setimageresource (r.drawable.arrow _ right ); } else { image.setimageresource (r.drawable.arrow _ bottom ); }}return v; }此时,如果已经设置了一些值,则此多级列表现在可以正确显示。 最后是拦截控制不足。

onitemclicklisteneritemclicklistener=newonitemclicklistener ({ @ overridepublicvoidonitemclick ) AdaPterview? arg0,View arg1,int arg2,long arg3) arraylistconnectionconnections=m adapter.get connections (; arraylistconnectionmconnections2=newarraylistconnection (; connectionc=(connection ) arg1.gettag ) r.id.companys_list; if(c==null ) {return; (if ) c.Haschild ) {int level=c.level; intpos=connections.indexof(c ); boolean isCheck=true; if(c.isexpansion((/收缩c.isExpansion=false; for(intI=0; i connections.size (; I ) if(ischeck ) if ) Iposconnections.get ) I ).level level ) {continue; }if(Ipos ) {isCheck=false; } mconnections2. add (connections.get (I ); }} else {//部署c.isExpansion=true; arraylistconnectionc2=newarraylistconnection (; intpos2=(mconnections.indexof ) c ) 1; int level2=-1; for(intI=pos2; i mConnections.size (; I () if ) mconnections.get(I ).level level ) ) C2.add ) mconnections.get ) I ); if (! mconnections.get(I ).isExpansion ) level2=mconnections.get ).level; for(intj=) I1; j mConnections.size (; j () if ) mconnections.get(j ).level level2) ) I; } else {break; }}}} else {break; }for(intj=0; j connections.size (; j ) { mconnections2. add (connections.get (j ) ); if(j==pos ) for ) intI=0; i c2.size (; I ) {mconnections2.add(C2.get ) I ); } } m adapter.set connections (mconnections 2; m adapter.notifydatasetinvalidated (; } else {}}};

计算部分很混乱,但只是个小demo。

最好是像一个view (监听和适配器都写里面)那样封装使用的时候直接复制文件来设定值,调用就可以了。

粗糙的效果图

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。