BlackBerry - 列出带有复选框以及搜索条件 [英] BlackBerry - List with checkbox along with search criteria

查看:246
本文介绍了BlackBerry - 列出带有复选框以及搜索条件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图用复选框显示数据列表,用户可以一次选择多个项目...
我想在列表顶部的搜索字段,将搜索列表...

I am trying to display a list of data with checkboxes, where user can select multiple items at one time... I want a search field on top of the list which will search through the list...

我如何做?

推荐答案

说明



首先,创建一个包含所有列表字段的向量,以便您可以随时在屏幕上添加和删除它们。当您创建屏幕时,将它们全部添加到列表控件。

Explanation

First, create a vector with all list fields, so you will be able to add and remove them on screen at any time. When you create screen, add them all to list control.

现在,假设您有一个EditFields - 您的搜索字段。您可以为其设置侦听器并捕获文本更改事件。

Now, lets say you have one of those EditFields - your search field. You can set a listener for it and catch text change event.

在该事件中,您可以从列表控件中删除所有字段,从搜索字段获取文本值,迭代所有字段向量,并将符合搜索条件的字段添加到列表控件。

On that event you can remove all fields from list control, take text value from search field, iterate all fields vector and add those which meet search criteria to list control.

LookupList控制:

LookupList control:

public class LookupList extends VerticalFieldManager {

    Vector mItems = null;

    public LookupList() {
        super();
        mItems = new Vector();
    }

    public void addItem(Field itemField) {
        String cookie = (String) itemField.getCookie();
        if (null == cookie)
            throw new IllegalArgumentException(
                    "String cookie must be set to lookupList field");
        mItems.addElement(itemField);
        add(itemField);
    }

    public void removeItem(int index) {
        Field itemField = (Field) mItems.elementAt(index);
        mItems.removeElement(itemField);
        delete(itemField);
    }

    public void lookup(String searchValue) {
        deleteAll();
        for (int i = 0, count = mItems.size(); i < count; i++) {
            Field field = (Field) mItems.elementAt(i);
            String cookie = (String) field.getCookie();
            if (cookie.startsWith(searchValue))
                add(field);
        }
    }
}

使用示例:

class Scr extends MainScreen implements FieldChangeListener {
    LookupList mList = null;
    BasicEditField mEdit = null;

    public Scr() {
        super();

        mEdit = new BasicEditField();
        add(mEdit);

        mEdit.setChangeListener(this);

        mList = new LookupList();
        for (int i = 0; i < 100; i++) {
            LabelField label = new LabelField("Lookup field #"
                    + String.valueOf(i));
            label.setCookie(String.valueOf(i));
            mList.addItem(label);
        }

        add(mList);
    }

    public void fieldChanged(Field field, int context) {
        if (field == mEdit)
            mList.lookup(mEdit.getText());
    }
}



PS




  • 您可以将任何字段后代类添加到列表(编辑/标签/ CustomCheckBos等),但它应该有一个字符串cookie值。

  • 您可以更改逻辑以按字段标签,文字或自定义属性进行搜索。

  • 这篇关于BlackBerry - 列出带有复选框以及搜索条件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆