2010-06-13 4 views
0

Я пытаюсь создать игру с сеткой 9x9 с GridView. Каждый элемент в сетке является TextView. Я могу установить начальные значения каждого элемента в сетке в методе getView() до «0», однако я хочу изменить значение каждой сетки отдельно после этого, но не смог этого сделать.Как получить доступ к отдельным элементам в Android GridView?

Я попытался добавить функцию update() в мой расширенный класс GridAdapter, который занимает позицию и номер для обновления в этой позиции, но это, похоже, не работает.

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

Doe, кто-нибудь знает, как это можно достичь?

Вот весь класс 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)); 
    } 
} 

} 
+0

Эй, я пытаюсь сделать подобное. но я получаю ячейку как null в функции обновления. не удалось получить представление. вы можете мне помочь? –

ответ

0

Попробуйте поставить "notifyDataSetChanged();" линии в конце вашего метода «обновления».

P.S. Было бы лучше, если бы вы заменили тип массива «myCells» (и соответственно визуализировали рендеринг) на другой, который ближе к вашей модели домена.

+0

Спасибо, попробуем это. Не совсем понял вторую точку. Вы хотите сказать, замените массив TextView другим видом? –

Смежные вопросы