Страница 1 из 1

Item-данные из GridView?

Добавлено: 16 сен 2012, 13:11
JDev
Не могу найти и понять, как достучаться к отдельному Item, менять его свойства, например фон или текст что он содержит.
Вот так вот делаю.

Код: Выделить всё


	private String[] data = new String[81];
	private GridView gvMain;
	private ArrayAdapter<String> adapter;
	private Dialog choiceDialog;
	final Context context = this;
	
	private static final String TAG = "My";

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_gamefield);

		init();
	}

	private void init() {

		for (int i = 0; i < 81; i++) {
			data[i] = String.valueOf(i + 1);
		}

		adapter = new ArrayAdapter<String>(this, R.layout.item, R.id.tvText, data);
		gvMain = (GridView) findViewById(R.id.gvMain);
		gvMain.setAdapter(adapter);
		gvMain.setOnItemClickListener(this);

		adjustGridView();

	}

	private void adjustGridView() {
		gvMain.setNumColumns(9);
		gvMain.setHorizontalSpacing(3);
		gvMain.setVerticalSpacing(3);
	}

	public void onItemClick(AdapterView<?> arg0, View arg1, int position, long id) {
		TextView tv = (TextView) findViewById(R.id.Time);
		tv.setText(String.valueOf(position + 1));
		
		Log.i(TAG, "info: "+adapter.getCount());
//Ну из адаптера могу получить вот такой вот стринг adapter.getItem(position)
		choiceDialog();

	}
Спасибо

Re: Item-данные из GridView?

Добавлено: 16 сен 2012, 13:24
Ordos
Я только начинаю изучать андроид, поэтому могу глупость сморозить =)
Но по-моему это невозможно.
Если нужно получить сами данные, то их можно получить через адаптер, а сам элемент списка (View) получить нельзя т.к. они могут и не существовать. Т.е андроид создаёт их по мере того, как они отображаются на экране. Более того, если какой-то item уже не отображается на экране, андроид может взять его и инициализировать другими данными (видимо для экономии ресурсов).
Поэтому доступ к конкретному item`му немного бесполезный.

Re: Item-данные из GridView?

Добавлено: 16 сен 2012, 13:52
JDev
Ordos писал(а):Я только начинаю изучать андроид, поэтому могу глупость сморозить =)
- так же как и я. :)

Ну а как тогда вытащить из адаптера data массив?

Код: Выделить всё

adapter = new ArrayAdapter<String>(this, R.layout.item, R.id.tvText, data);

Re: Item-данные из GridView?

Добавлено: 16 сен 2012, 14:40
Ordos
Сами данные можно получить через метод getItem.
Либо можно попробовать создать свой адаптер, унаследовать его от базового класса, переопределить метод getView и самостоятельно управлять созданием view для каждого item`а.
Но опять же, на 100% не уверен =)

Re: Item-данные из GridView?

Добавлено: 16 сен 2012, 15:16
JDev
Ordos писал(а):Сами данные можно получить через метод getItem.
- да, действительно, - я почему-то думал, что это дергается номер айтема.
вот так, получаю доступ у свойствам.

Код: Выделить всё

Log.i(TAG, "info: "+adapter.getItem(80));
Ordos писал(а): Либо можно попробовать создать свой адаптер, унаследовать его от базового класса, переопределить метод getView и самостоятельно управлять созданием view для каждого item`а.
Но опять же, на 100% не уверен =)
- думаю скорее всего так и делается, посмотрим, может знающие ответят.
Пасиб!

Re: Item-данные из GridView?

Добавлено: 16 сен 2012, 15:36
rezak90

Код: Выделить всё

 public void onItemClick(AdapterView<?> arg0, View view, int position, long id) {
}
view - это есть ваша "достучавшаяся" вьюха, вы же по ней клацнули, теперь в обработчике вытворяйте с ней что хотите.

Re: Item-данные из GridView?

Добавлено: 16 сен 2012, 15:42
JDev
rezak90 писал(а):

Код: Выделить всё

 public void onItemClick(AdapterView<?> arg0, View view, int position, long id) {
}
view - это есть ваша "достучавшаяся" вьюха, вы же по ней клацнули, теперь в обработчике вытворяйте с ней что хотите.
:twisted: :twisted: :twisted: я тормоз. :):)
Спасибо!!!