请解释阵列适配器及其用途.更好

joj*_*o10 12 android

更好的是,有人可以逐点解释这个程序吗?

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;
        }
      });
  }
}
Run Code Online (Sandbox Code Playgroud)

Sur*_*esh 53

ToDoList 是定义用户看到的屏幕的UI元素的活动.

屏幕的UI元素在布局中定义 /res/layout/main.xml

布局main.xml中的一个UI元素是一个ID为的ListView myListView

ListView可以是充当列表项容器的东西.因此,所有列表视图需要知道的是,列表中有多少项,以及每个列表项的外观如何?

适配器是了解列表项以及如何在屏幕上表示或绘制每个列表项的东西.

上面的示例使用ArrayAdapter,其构造函数采用3个参数,包含有关列表项的信息

final ArrayAdapter<String> aa;
aa = new ArrayAdapter<String>(this,
                              android.R.layout.simple_list_item_1,
                              todoItems);
Run Code Online (Sandbox Code Playgroud)

第一个参数是Context访问系统服务和资源(您需要布局inflater来创建列表项视图)

第二个参数定义列表的布局,该列表定义列表项的显示方式listview.这里android.R.layout.simple_list_item_1使用由框架定义的布局.

第三个参数是有关列表项的信息,通常此信息用于为列表项创建视图.

最后创建Adapter给了ListView

myListView.setAdapter(aa);
Run Code Online (Sandbox Code Playgroud)

现在ListView调用函数Adapter来获取列表项的视图并填充在容器中.

如果列表项被更改(这里是待办事项列表)适配器可以通过调用让ListView了解它notifyDataSetChanged.

aa.notifyDataSetChanged();
Run Code Online (Sandbox Code Playgroud)

您可以查看ArrayAdapter的实现以获得更清晰的信息.

希望这对你有所帮助!


Rau*_*nak 7

简单来说,Adapter是一个集合处理程序,它将集合中的每个项目作为视图返回.ArrayAdapter是Android中可用的众多适配器之一.其他包括ListAdapter,GalleryAdapter,CursorAdapter等.看看Android参考