android - 调用方法 notifyDataSetChanged() 后 GridView 不会立即更新
问题描述
我正在尝试使用 android GridView 构建井字游戏(仅用于人类与 android 设备的游戏,我已经为我的机器人实现了一个名为 minimax 的智能算法)。我已经成功构建了所有东西(UI,我的机器人的极小极大算法),但仍然有一个难以理解的问题,即当我单击 Gridview 项目时,我希望 GridView 必须立即更新,然后我的机器人开始计算。所以,我已经实现了我的代码来设置 GridView 项目点击如下:
gridviewBoard.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l){
//if it is a legal moves of player
if (isLegal(false, i)){
//put X into board
put(false, i);
//I want to update gridview immediately by using notifyDataSetChanged()
chessAdapter.notifyDataSetChanged();
//then start my bot calculating
// findBestMove is a method to find the best move for my bot
// by using minimax algorithm
int nextMove = findBestMove();
}
}
}
但是,gridviewBoard 并没有立即更新,gridviewBoard 仅在计算 findBestMove 函数时才更新,而计算时间较长。总结,我想在项目点击后和我的机器人计算之前立即更新 gridviewBoard。有人可以帮助我,并为我糟糕的英语语法感到抱歉。
解决方案
推荐阅读
- hive - 不可读的直线查询结果
- python - 错误方法未定义,即使它看起来正确
- python - 正则表达式匹配 abc OR a OR c
- ionic-framework - 离子手势值不会在 html 中刷新
- node.js - 如何使用基于网站的 ExpressJs 设置 CORS 和 JWT 令牌验证
- web - 如何创建与我的网站的不和谐连接
- mongoose - 在 mongoose 中间件/钩子中增加 findOneAndUpdate 的数量
- c - Cooja 模拟器 clock_time 函数没有被模拟
- reactjs - React 选择框中的选项过滤器
- c++ - DEXT 在 macOS 10.15.7 上崩溃