天天看点

安卓的记事本应用开发日志(三)

如题:

响应返回键。

效果

安卓的记事本应用开发日志(三)

解决:

Activity

中重写

onKeyDown

方法,当用户按下返回按键,在该方法中返回

true

的时候,程序退出;在该方法中返回

false

的时候,程序不退出。

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if(keyCode == KeyEvent.KEYCODE_BACK ){
        boolean flag = checkboxListener.pressBackWhenShowCheckBox();
        if(flag) return false;
        else return super.onKeyDown(keyCode, event);
    }
    return super.onKeyDown(keyCode, event);
}
           

至于

checkboxListener

,是自定义的一个接口,用于监听是否当前的

ListView

中的

CheckBox

是否处于可见状态。该类中的该接口的定义和初始化接口如下:

private static CheckboxShowAndPressBack checkboxListener;

public static void setCheckboxShowAndPressBack(CheckboxShowAndPressBack checkboxShowAndPressBack){
    checkboxListener = checkboxShowAndPressBack;
}
           

该接口定义如下:

public interface CheckboxShowAndPressBack {
    // 自定义一个接口,用于判断ListView中是否设置显现CheckBox
    boolean pressBackWhenShowCheckBox();
}
           

然后,在实现

ListView

Adapter

的类中,实现

CheckboxShowAndPressBack

接口,实现方法如下:

@Override
public boolean pressBackWhenShowCheckBox() {
    // 检查一次,当checkbox显示,就返回true,那么在press back时候,就不退出程序;否则,退出程序
    boolean flag = false;
    for (int j = 0; j < lists.size(); j++) {
        if(lists.get(j).isShowCheckbox()) {
            flag = true;
            lists.get(j).setShowCheckbox(false);   // 设置lists中的所有的isShowChexkbox为false。
        }
    }
    listView.setAdapter(new NoteItemAdapter(root.getContext(), R.layout.note_list_item_layout, lists));
    return flag; // 返回标志
}
           

完整代码,已上传

CSDN

,链接如下:地址

其他:

安卓的记事本应用开发日志(二) – 简单页面实现。

安卓的记事本应用开发日志(一) – 页面草图构建。

继续阅读