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