android - 如何在 GridView 中编辑文本域(EditText)?数独解决应用程序

标签 android gridview android-edittext adapter sudoku

我正在制作数独解算器应用程序。我想做一个用户可以输入数独初始值的 Activity ...我不想进入 XML 并添加 81 个单独的 EditText 标签。

我认为使用 GridView + BaseAdapter 组合会更聪明!太...

目前我有一个表示数独单元格的 Cell 类,并且如建议的那样,一个 GridView + CellAdapter 实现。网格项的布局仅包含一个 EditText(无文本集)。这为我提供了 Activity 中干净的 9x9 EditText 网格的结果。

问题:EditText 不可编辑。

您可以在其中输入数字,但是一旦您关闭键盘,文本就会变回空白。这里发生了什么?跟适配器有关系吗?

代码:

public class CellAdapter extends BaseAdapter {

    private Activity context;
    private Cell[] cells;

    public CellAdapter(Activity c, Cell[] s) {
        context = c;
        cells = s;
    }

    @Override
    public int getCount() {
        return cells.length;
    }

    @Override
    public Object getItem(int i) {
        return cells[i];
    }

    @Override
    public long getItemId(int i) {
        return 0;
    }

    @Override
    public View getView(int i, View view, ViewGroup viewGroup) {
        //Cell cell = cells[i];

        LayoutInflater inflater = context.getLayoutInflater();

        View gridViewItem = inflater.inflate(R.layout.square_layout, null, true);

        return gridViewItem;
    }
}

最佳答案

已修复!

我将 getView 方法更改为:

    @Override
    public View getView(int i, View convertView, ViewGroup parent) {
        Cell c = cells[i];
        LayoutInflater inflater = LayoutInflater.from(context);

        ViewHolder holder = null;

        if(convertView==null){
            holder = new ViewHolder();
            convertView = inflater.inflate(R.layout.square_layout, null);
            holder.et = (EditText) convertView.findViewById(R.id.et_value);
            convertView.setTag(holder);
        }else{
            holder = (ViewHolder) convertView.getTag();
        }

        return convertView;
    }

    public class ViewHolder {
        EditText et;
    }

关键是不要执行 edittext.setText() 因为这会使字段保持相同的值

关于android - 如何在 GridView 中编辑文本域(EditText)?数独解决应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59402691/

相关文章:

java - Android: fragment 未附加到 Activity 错误

java - Java 中的 putSerializable 和 putParcelable 有什么不同?

objective-c - 在 NSArray 中创建 UIVews 网格

asp.net - 如何将带有零的gridview中的标签绑定(bind)到来自sql server的空值

android - Expo Developer Tools 与 Expo CLI 断开连接

android - 如何在Xamarin.Form应用程序中获取Android底部软件导航栏的高度?

android - 在 GridView 中为未读通知添加徽章 Android

java - Android检查EditText

android - 在 Android 的 EditText View 中允许多行吗?

java - 在我的键盘上实现搜索按钮