gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 22:37:13 26 4
gpt4 key购买 nike

我正在制作数独解算器应用程序。我想做一个用户可以输入数独初始值的 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com