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 лучше понять всю концепцию в моем опыте