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

Интерфейс, диалоги, темы, стили, меню
Ответить
JDev
Сообщения: 88
Зарегистрирован: 05 авг 2012, 19:42

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

Сообщение JDev » 16 сен 2012, 13:11

Не могу найти и понять, как достучаться к отдельному 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();

	}
Спасибо

Аватара пользователя
Ordos
Сообщения: 4
Зарегистрирован: 16 сен 2012, 12:38

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

Сообщение Ordos » 16 сен 2012, 13:24

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

JDev
Сообщения: 88
Зарегистрирован: 05 авг 2012, 19:42

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

Сообщение JDev » 16 сен 2012, 13:52

Ordos писал(а):Я только начинаю изучать андроид, поэтому могу глупость сморозить =)
- так же как и я. :)

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

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

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

Аватара пользователя
Ordos
Сообщения: 4
Зарегистрирован: 16 сен 2012, 12:38

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

Сообщение Ordos » 16 сен 2012, 14:40

Сами данные можно получить через метод getItem.
Либо можно попробовать создать свой адаптер, унаследовать его от базового класса, переопределить метод getView и самостоятельно управлять созданием view для каждого item`а.
Но опять же, на 100% не уверен =)
У любой задачи существует по крайней мере одно очевидное и невероятно простое для понимания неправильное решение =)

JDev
Сообщения: 88
Зарегистрирован: 05 авг 2012, 19:42

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

Сообщение JDev » 16 сен 2012, 15:16

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

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

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

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

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

Сообщение rezak90 » 16 сен 2012, 15:36

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

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

JDev
Сообщения: 88
Зарегистрирован: 05 авг 2012, 19:42

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

Сообщение JDev » 16 сен 2012, 15:42

rezak90 писал(а):

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

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

Ответить