[原创]J2ME 实现可伸展目录树TreeList[1]

[入库:2006年2月23日] [更新:2007年3月24日]

本文简介:

  J2ME里面有自带的List类,但是功能太弱,没有实现ViewModel的分离,所以操作起来比较费事。本来事想写一个CanvasTreeList,但是画起来算坐标又太麻烦,所以选取了一个折中的方法,继承List,实现一个操作起来比较方便的组件。

       目的:

       1.可伸缩的目录树结构,暂时先实现两层。

       2.Label和存储内容分离。

       3.激活和非激活图片分开。

       4.通过选择事件可以准确快速找到对应内容

       5.存储内容无关性,里面可以放置任何Object

       实现思路:

       1.封装一个ExpandItem类,用来存储每一条数据。

/**
  *
默认图片

  */
 private  String imagePath="";
 /*
  *
激活图片,如果为空说明此图片无效
  */
 private String selectImgPath=null;
 /**
  *

  */
 public static int GROUP=1;
 /**
  *
记录
  */
 public static int ITEM=0;
 /**
  *
是否选中,如果选中则默认为展开状态
  */
 private boolean ifselected=false;
 /**
  *
显示Label
  */
 private String label;
 /**
  *
类型:组,记录

  */
 private int type;
 /**
  *
存储的对象
  */

          GROUP表示这个ITEM是一个父节点,下面包含字节点,这样它的Content将是一个Vector.

          ITEM表示这个ITEM是根节点。

         selectImgPath,是激活后的图标,可以为空,为空的时候选择了这个ITEM图标不变。

然后就是ExpandList类,此类的数据结构如下:

          private Vector itemList = new Vector();

          /*用来存储内容的数据结构*/

           private ExpandListItem currentSelectedObject = null;

           /*当前所选择的对象,方便获取*/

           private int currentSelectedIndex = -1;

           /*当前选择的对象在队列中的Index,队列有两个,一个是真实数据的存储Vector,另外一个是显示在屏幕上的队列。这两个有时候是不一样的。因为有的节点有子节点*/

           private Vector appearHookList = new Vector();

本文关键:[原创]J2ME 实现可伸展目录树TreeList
  相关方案
Google
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top