Intereting Posts
Ошибка использования RecyclerView: у указанного дочернего элемента уже есть родительский элемент Как выделить элемент списка ListView при касании? Как перехватить нажатия кнопок на гарнитуре в Android? Как сделать несколько запросов и ждать, пока данные будут получены из всех запросов в версии 2.0 – android Одна кнопка – 3 магазина приложений – как перенаправить пользователя в соответствующее приложение? EnableAutoActivityTracking не автоматически отслеживает действия? Android – Apache Mime & httpClient Обновлено приложение с картой v1 в google play, показывающее пустые фрагменты Как начать общий переход элементов с помощью фрагментов? Бета-версия Android Studio 1.2 зависает при отладке Невозможно связать локальный XXXX для отладчика Как запустить диспетчер загрузки из широковещательного приемника? Просмотр (а) не отображается на Android Jelly Bean Android Shared Preferences не работает ListView с заголовком

Android-приложение – как отобразить список элементов и сделать их интерактивными

Мне нужно отобразить список текстовых элементов на экране и сделать их интерактивными. Таким образом, это будет что-то вроде списка ссылок в веб-приложении.

Как я могу сделать это на экране Android Activity?

Это будет случайное число элементов, которые я должен извлечь из db и отобразить все как ссылки.

Любая идея, как это можно сделать?

Solutions Collecting From Web of "Android-приложение – как отобразить список элементов и сделать их интерактивными"

Вы должны прочитать документ о ListActivity , ListView и следовать учебнику Hello ListView .

Да, ты можешь сделать это. Создайте класс DataExchange, чтобы извлечь его из Db .. Сохраните строки в массиве.

Создайте ArrayAdapter, чтобы отобразить массив строк, полученных из базы данных.

например

public class AndroidListViewActivity extends ListActivity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // storing string resources into Array String[] numbers = {"one","two","three","four"} // here you store the array of string you got from the database // Binding Array to ListAdapter this.setListAdapter(new ArrayAdapter<String>(this, R.layout.list_item, R.id.label, numbers)); // refer the ArrayAdapter Document in developer.android.com ListView lv = getListView(); // listening to single list item on click lv.setOnItemClickListener(new OnItemClickListener() { public void onItemClick(AdapterView<?> parent, View view, int position, long id) { // selected item String num = ((TextView) view).getText().toString(); // Launching new Activity on selecting single List Item Intent i = new Intent(getApplicationContext(), SingleListItem.class); // sending data to new activity i.putExtra("number", num); startActivity(i); } }); } } 

Вторая активность для отображения определенного элемента, который вы нажали, должна быть

 public class SingleListItem extends Activity{ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); this.setContentView(R.layout.single_list_item_view); TextView txtProduct = (TextView) findViewById(R.id.product_label); Intent i = getIntent(); // getting attached intent data String product = i.getStringExtra("number"); // displaying selected product name txtProduct.setText(product); } } 

Вам нужно создать различные файлы макета соответственно. Надеюсь, это поможет вам 🙂

Вы должны использовать ListView . Это очень просто, просто создайте ListActivity , поместите свои элементы внутри Adapter а затем установите его как Adapter вашей ListActivity .

Вы можете узнать больше о ListViews здесь

Существует также новая парадигма, называемая ListFragment.

Я использовал ListViews раньше, но теперь предпочитаю подход фрагментов – это просто очень прямолинейный и довольно гибкий esp на планшетах, так как взаимодействие с другой областью на экране при выборе элемента довольно гибкое и требует очень мало кода.

Только один пример:

 public class Select_FoodCategories_Fragment extends android.app.ListFragment { private static final boolean DEBUG = true; @Override public void onCreate(Bundle savedInstanceState) { if (DEBUG) Log.i(this.getClass().getSimpleName(), " ->" + Thread.currentThread().getStackTrace()[2].getMethodName()); super.onCreate(savedInstanceState); } @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); if (DEBUG) Log.i(this.getClass().getSimpleName(), " ->" + Thread.currentThread().getStackTrace()[2].getMethodName()); HoldingActivity a = (HoldingActivity) getActivity(); //accessing a variable of the activity is easy a.visibleListViewInFragment = getListView(); List<XYZ> listTodisplay = a.getListToDisplay(); MyAdapter adapter = new MyAdapter( getActivity(), 0, listTodisplay); setListAdapter(adapter); } @Override public void onListItemClick(ListView l, View v, int position, long id) { if (DEBUG) Log.i(this.getClass().getSimpleName(), " ->" + Thread.currentThread().getStackTrace()[2].getMethodName()); XYZ item = (XYZ) getListAdapter() .getItem(position); } } 

Подробнее здесь: http://developer.android.com/reference/android/app/ListFragment.html

Кстати, я нахожу, что это стоит того, чтобы познакомиться с концепцией новых фрагментов – это просто делает жизнь намного проще – esp на планшетах!

Ps Я оставил отладочные заявления в назначении – поскольку он помогает alto лучше понять всю концепцию в моем опыте