Пожалуйста, объясните Array Adapters и их назначение. Даже лучше
Лучше еще кто-нибудь может объяснить эту программу по пунктам?
package com.paad.todolist;
import java.util.ArrayList;
import android.app.Activity;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import android.view.View.OnKeyListener;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.ListView;
public class ToDoList extends Activity {
/** Called when the activity is first created. */
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Inflate your view
setContentView(R.layout.main);
// Get references to UI widgets
ListView myListView = (ListView)findViewById(R.id.myListView);
final EditText myEditText = (EditText)findViewById(R.id.myEditText);
// Create the array list of to do items
final ArrayList<String> todoItems = new ArrayList<String>();
// Create the array adapter to bind the array to the listview
final ArrayAdapter<String> aa;
aa = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1,
todoItems);
// Bind the array adapter to the listview.
myListView.setAdapter(aa);
myEditText.setOnKeyListener(new OnKeyListener() {
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (event.getAction() == KeyEvent.ACTION_DOWN)
if (keyCode == KeyEvent.KEYCODE_DPAD_CENTER)
{
todoItems.add(0, myEditText.getText().toString());
aa.notifyDataSetChanged();
myEditText.setText("");
return true;
}
return false;
}
});
}
}
Ответы
Ответ 1
ToDoList
- это активность, определяющая элементы пользовательского интерфейса экрана, которые пользователь видит.
Элементы интерфейса UI определены в макете /res/layout/main.xml
Один из элементов пользовательского интерфейса в макете main.xml - это ListView, чей идентификатор myListView
ListView
может быть чем-то, что действует как контейнер для элементов списка. Таким образом, все представления списка должны знать, сколько элементов находится в списке и как выглядит каждый элемент списка?
Адаптер - это то, что знает о элементах списка и как представлять или рисовать каждый элемент списка на экране.
В приведенном выше примере используется ArrayAdapter, и его конструктор принимает 3 параметра, имеющих информацию о элементах списка
final ArrayAdapter<String> aa;
aa = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1,
todoItems);
Первым аргументом является Context
для доступа к системным службам и ресурсам (вам нужен макет надувных элементов для создания списка элементов)
Второй аргумент определяет макет списка, определяющий, как элемент списка отображается в ListView
. Здесь используется макет android.R.layout.simple_list_item_1
, который определяется каркасом.
Третий аргумент - это информация о элементе списка, обычно эта информация используется для создания представления для элемента списка.
Наконец, созданный Adapter
присваивается ListView
myListView.setAdapter(aa);
Теперь ListView
вызывает функции Adapter
, чтобы получить представления элемента списка и заполнить в контейнере.
Если элементы списка изменены (здесь список дел) Адаптер может позволить ListView узнать об этом, вызвав notifyDataSetChanged
.
aa.notifyDataSetChanged();
Вы можете взглянуть на реализацию ArrayAdapter, чтобы получить большую ясность.
Надеюсь, это поможет вам!
Ответ 2
Проще говоря, Adapter является обработчиком коллекции, который возвращает каждый элемент в коллекции как представление. ArrayAdapter - один из многих адаптеров, доступных в Android. Другие включают в себя: ListAdapter, GalleryAdapter, CursorAdapter и т.д. Посмотрите ссылки на Android
Ответ 3
Объект Adapter
действует как мост между AdapterView
и базовыми данными для этого представления. Adapter
обеспечивает доступ к элементам данных. Adapter
также отвечает за создание представления для каждого элемента в наборе данных. Адаптер