5.11-5.12学习总结

项目进度:

经过这两天,总算是把长连接做好了,客户端和服务端也能顺畅的进行交流了,总算是正式的视线了老师的创建课程,学生的添加课程,老师的删除课程和个人修改资料了。

目前在写的就是老师的删除学生和学生退出课程,数据库的操作已经完成和发送服务一起完成,现在主要就是考虑老师删除学生或者学生退出课程该怎么在课程管理界面顺带一起在页面上学生的名字。

同时课堂签到的数据库插入和向服务端发送消息的业务已经处理好,目前主要卡在了如何通知班级里的学生。之后大概会请求一下写QQ项目的同学,因为这个类似群聊的实现。

学习了ListView的双击点击事件:

listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    private int clickCount = 0;
    private Handler handler = new Handler(); // 用于延迟清空点击计数器

    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        clickCount++;
        handler.postDelayed(new Runnable() {
            @Override
            public void run() {
                if (clickCount == 1) { 
                    // 在这里添加处理单击事件的代码
                } else if (clickCount == 2) { 
                    // 处理双击事件
                    // 获取双击的列表项对应的课程数据 

                    // 启动课程详情页面,并传递课程数据
                    Intent intent = new Intent(MainActivity.this, CourseDetailActivity.class);
                    //传递数据
                    startActivity(intent);
                }
                clickCount = 0; // 处理完成后清空点击计数器
            }
        }, 300); // 设置延迟时间,单位毫秒,可根据需要调整
    }
});

2.修正了一些不安全的线程,比如使用HashMap改为使用CurrentHashMap,比如使用CopyOnWriteArrayList集合,而且这两个都是可序列化的,保证了线程安全,又能实现需要的功能点。由于项目中要多次使用,所以选择了使用泛型类:

public class CopyOnWriteArrayList<T> implements Serializable {
    private static final long serialVersionUID = 123456789L;
    private CopyOnWriteArrayList<T> copyOnWriteArrayList;

    public CopyOnWriteArrayList(CopyOnWriteArrayList<T> copyOnWriteArrayList) {
        this.copyOnWriteArrayList = copyOnWriteArrayList;
    }

    public CopyOnWriteArrayList<T> getCopyOnWriteArrayList() {
        return copyOnWriteArrayList;
    }

    public void setCopyOnWriteArrayList(CopyOnWriteArrayList<T> copyOnWriteArrayList) {
        this.copyOnWriteArrayList = copyOnWriteArrayList;
    }
}
public class ConcurrentHashMap<T> implements Serializable {
    private static final long serialVersionUID = 123456789L;
    private CopyOnWriteArrayList<T> copyOnWriteArrayList;

    public ConcurrentHashMap(CopyOnWriteArrayList<T> copyOnWriteArrayList) {
        this.copyOnWriteArrayList = copyOnWriteArrayList;
    }

    public CopyOnWriteArrayList<T> getCopyOnWriteArrayList() {
        return copyOnWriteArrayList;
    }

    public void setCopyOnWriteArrayList(CopyOnWriteArrayList<T> copyOnWriteArrayList) {
        this.copyOnWriteArrayList = copyOnWriteArrayList;
    }
}

3.写项目中遇到了几次的异常: 

 这个异常很常见的原因就是因为使用io流时的操作:规定就是一个new oos必须用一个new ois来接收,不然就会抛出这个异常,原因就是因为ois读入的时候有一个头部,导致ois读入的时候读取了头部,不能正确的接收到正确的对象。

具体解释:http://t.csdn.cn/m6Lbb

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值