如何访问Android GridView中的各个项目?

时间:2010-06-13 12:57:37

标签: android gridview

我正在尝试使用GridView创建一个带有9x9网格的游戏。网格中的每个项目都是TextView。 我能够将getView()方法中网格中每个项目的初始值设置为“0”,但是我想在此之后单独更改每个网格的值,但是无法这样做。

我尝试在我的扩展GridAdapter类中添加一个update()函数,该函数在该位置采用位置和数字进行更新,但这似乎没有用。

public void update(int position, int number) {
 TextView cell;
 cell = (TextView) getItem(position);
 if (cell != null)
 {
  cell.setText(Integer.toString(number));
 }
}

有人知道如何实现这一目标吗?

以下是整个GridAdapter类,如果需要,

public class SudokuGridAdapter extends BaseAdapter {
 private Context myContext;
 private TextView[] myCells;

 public SudokuGridAdapter(Context c) {
  myContext = c;
  myCells = new TextView[9*9];
 }

 @Override
 public int getCount() {
  // TODO Auto-generated method stub
  return 9*9;
 }

 @Override
 public Object getItem(int position) {
  return myCells[position];
 }

 @Override
 public long getItemId(int position) {
  // TODO Auto-generated method stub
  return 0;
 }

 @Override
 public View getView(int position, View convertView, ViewGroup parent) {
  TextView cell;
  if (myCells[position] == null)
     {
   cell = myCells[position] = new TextView(myContext);
   cell.setText("0");
        }
     else
     {
      cell = myCells[position];
     }
     return cell;
 }

 public void update(int position, int number) {
  TextView cell;
  cell = (TextView) getItem(position);
  if (cell != null)
  {
   cell.setText(Integer.toString(number));
  }
 }

}

1 个答案:

答案 0 :(得分:0)

尝试输入“notifyDataSetChanged();”在“更新”方法结束时的行。

P.S。如果将“myCells”数组类型(并相应地查看渲染)替换为更接近您的域模型的另一个数组类型会更好。