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

Выделение элементов ListView

Добавлено: 02 авг 2014, 17:28
Sergo
Привет всем.
Пишу вот файловый менеджер, но в ходе разработки возникла небольшая трудность.

Код моего адаптера

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

 ListView listView = (ListView) findViewById(R.id.listView1);
		catList = new ArrayList<HashMap<String, Object>>(); // создаем массив
															// списков
		HashMap<String, Object> hm;

		Sort();

		for (int i = 0; i < pos; i++) {
			hm = new HashMap<String, Object>();
			hm.put(TITLE, mSign[i]); // Название
			hm.put(DESCRIPTION_0, mDate[i]); // Описание
			hm.put(DESCRIPTION_1, mData[i]);
			hm.put(ICON, mImage[i]); // Картинка
			catList.add(hm);
		}

		SimpleAdapter adapter = new SimpleAdapter(this, catList, R.layout.item,
				new String[] { TITLE, DESCRIPTION_0, DESCRIPTION_1, ICON },
				new int[] { R.id.sign, R.id.date, R.id.data, R.id.icon });

		Parcelable state = listView.onSaveInstanceState();
		listView.setAdapter(adapter);
		listView.onRestoreInstanceState(state);

		listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL);
		listView.setMultiChoiceModeListener(new MultiChoiceModeListener() {

			public boolean onCreateActionMode(ActionMode mode, Menu menu) {
				mode.getMenuInflater().inflate(R.menu.context, menu);
				return true;
			}

			public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
				return false;
			}

			@Override
			public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
				Log.d(LOG_TAG, "item " + item.getTitle());
				mode.finish();
				return false;
			}

			public void onDestroyActionMode(ActionMode mode) {
			}

			public void onItemCheckedStateChanged(ActionMode mode,
					int position, long id, boolean checked) {

				//mode.finish();
				//mFile = dirPath + "/" + mSign[position];
               // pFile = position;
				//showDialog(IDD_SEE);
				
				
				Log.d(LOG_TAG, "onItemLongClick position = " + position
						+ ", checked = " + checked);

			}
		});

		listView.setOnItemClickListener(new OnItemClickListener() {
			@Override
			public void onItemClick(AdapterView<?> parent, View view,
					int position, long id) {
				Log.d(LOG_TAG, "onItemClick " + position);
				ListClick(position);
			}
		});
Как видно я используя Action Mode. Сообственно суть проблемы в том, что нужно менять цвет текста, при выделении на на пример красный, а при "развыделении" обратно в черный.
Если не сложно, помогите советом.

Re: Выделение элементов ListView

Добавлено: 02 авг 2014, 20:52
Foenix
нужно не симпл адаптер использовать, а свой писать, перопределять метод getView, при этом еще в данные добавить поле для выделения, например, boolean и при выделении его устанавливать в true, а в getView если true то красить красным, если false то черным.
Только так не делают.
Нужно юзать http://developer.android.com/design/pat ... ction.html : Using the contextual action bar