Java 使用ArrayList填充ListView?

Java 使用ArrayList填充ListView?,java,android,listview,arraylist,Java,Android,Listview,Arraylist,我的Android应用程序需要使用ArrayList中的数据填充ListView 我做这件事有困难。有人能帮我查一下密码吗? 另请查看界面: ArrayAdapter(Context context, int textViewResourceId, List<T> objects) ArrayAdapter(上下文上下文、int-textViewResourceId、列表对象) 您需要通过ArrayAdapter执行此操作,它将使您的ArrayList(或任何其他集合)适应布局中的

我的
Android
应用程序需要使用
ArrayList
中的数据填充
ListView

我做这件事有困难。有人能帮我查一下密码吗?

另请查看界面:

ArrayAdapter(Context context, int textViewResourceId, List<T> objects)
ArrayAdapter(上下文上下文、int-textViewResourceId、列表对象)

您需要通过
ArrayAdapter
执行此操作,它将使您的ArrayList(或任何其他集合)适应布局中的项目(ListView、微调器等)

这是政府所说的:

一种
ListAdapter
,用于管理由任意对象数组支持的
ListView
。默认情况下,此类希望提供的资源id引用单个
TextView
。如果要使用更复杂的布局,请使用也具有字段id的构造函数。该字段id应引用较大布局资源中的
TextView

无论引用的是
TextView
,它都将填充数组中每个对象的
toString()
。可以添加自定义对象的列表或数组。覆盖对象的
toString()
方法,以确定将为列表中的项目显示哪些文本

要在阵列显示中使用除
文本视图
以外的其他内容,例如
图像视图
,或者要在视图中填充
toString()
结果之外的一些数据,请覆盖
getView(int,View,ViewGroup)
以返回所需的视图类型

因此,您的代码应该如下所示:

public class YourActivity extends Activity {

    private ListView lv;

    public void onCreate(Bundle saveInstanceState) {
         setContentView(R.layout.your_layout);

         lv = (ListView) findViewById(R.id.your_list_view_id);

         // Instanciating an array list (you don't need to do this, 
         // you already have yours).
         List<String> your_array_list = new ArrayList<String>();
         your_array_list.add("foo");
         your_array_list.add("bar");

         // This is the array adapter, it takes the context of the activity as a 
         // first parameter, the type of list view as a second parameter and your 
         // array as a third parameter.
         ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(
                 this, 
                 android.R.layout.simple_list_item_1,
                 your_array_list );

         lv.setAdapter(arrayAdapter); 
    }
}
公共类YourActivity扩展活动{
私有ListView lv;
创建公共void(Bundle saveInstanceState){
setContentView(R.layout.your_布局);
lv=(ListView)findViewById(R.id.your\u list\u view\u id);
//实例化数组列表(无需执行此操作,
//你已经有你的了)。
列出您的_数组_List=new ArrayList();
你的数组列表。添加(“foo”);
你的数组列表。添加(“条”);
//这是数组适配器,它将活动的上下文作为
//第一个参数,作为第二个参数的列表视图的类型,以及
//数组作为第三个参数。
ArrayAdapter ArrayAdapter=新的ArrayAdapter(
这
android.R.layout.simple\u list\u item\u 1,
您的_数组_列表);
低压设置适配器(阵列适配器);
}
}
公共类示例扩展活动
{
私有ListView lv;
ArrayList arrlist=新的ArrayList();
//让我假设您正在将值放入此arraylist中
//现在将arraylist转换为array
//你会在这里得到一个exmaple
//http://www.java-tips.org/java-se-tips/java.lang/how-to-convert-an-arraylist-into-an-array.html 
专用字符串arr[]=convert(arrlist);
@凌驾
创建时的公共void(Bundle bun)
{
super.onCreate(bun);
setContentView(R.layout.main);
lv=(ListView)findViewById(R.id.lv);
lv.setAdapter(新的ArrayAdapter(这个,android.R.layout.simple_list_item_1,arr));
}
}

尝试以下答案,使用ArrayList填充listview

public class ExampleActivity extends Activity
{
    ArrayList<String> movies;

    public void onCreate(Bundle saveInstanceState)
    {
       super.onCreate(saveInstanceState);
       setContentView(R.layout.list);

       // Get the reference of movies
       ListView moviesList=(ListView)findViewById(R.id.listview);

       movies = new ArrayList<String>();
       getMovies();

       // Create The Adapter with passing ArrayList as 3rd parameter
       ArrayAdapter<String> arrayAdapter =      
                 new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, movies);
       // Set The Adapter
       moviesList.setAdapter(arrayAdapter); 

       // register onClickListener to handle click events on each item
       moviesList.setOnItemClickListener(new OnItemClickListener()
       {
           // argument position gives the index of item which is clicked
           public void onItemClick(AdapterView<?> arg0, View v,int position, long arg3)
           {
               String selectedmovie=movies.get(position);
               Toast.makeText(getApplicationContext(), "Movie Selected : "+selectedmovie,   Toast.LENGTH_LONG).show();
           }
        });
    }

    void getmovies()
    {
        movies.add("X-Men");
        movies.add("IRONMAN");
        movies.add("SPIDY");
        movies.add("NARNIA");
        movies.add("LIONKING");
        movies.add("AVENGERS");   
    }
}
公共类ExampleActivity扩展活动
{
ArrayList电影;
创建公共void(Bundle saveInstanceState)
{
super.onCreate(saveInstanceState);
setContentView(R.layout.list);
//获取电影的参考资料
ListView moviesList=(ListView)findViewById(R.id.ListView);
电影=新的ArrayList();
获取电影();
//使用传递的ArrayList作为第三个参数创建适配器
ArrayAdapter ArrayAdapter=
新的ArrayAdapter(这是android.R.layout.simple\u list\u item\u 1,电影);
//设置适配器
设置适配器(arrayAdapter);
//注册onClickListener以处理每个项目上的单击事件
setOnItemClickListener(新的OnItemClickListener()
{
//参数位置给出所单击项的索引
public void onItemClick(AdapterView arg0,视图v,内部位置,长arg3)
{
字符串selectedmovie=movies.get(位置);
Toast.makeText(getApplicationContext(),“选定电影:”+selectedmovie,Toast.LENGTH\u LONG.show();
}
});
}
void getmovies()
{
添加(“X战警”);
电影。添加(“铁人”);
添加(“SPIDY”);
添加(“纳尼亚”);
电影。添加(“LIONKING”);
电影。添加(“复仇者”);
}
}

下面是一个如何实现列表视图的示例:

 @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    //We have our list view
    final ListView dynamic = findViewById(R.id.dynamic);

    //Create an array of elements
    final ArrayList<String> classes = new ArrayList<>();
    classes.add("Data Structures");
    classes.add("Assembly Language");
    classes.add("Calculus 3");
    classes.add("Switching Systems");
    classes.add("Analysis Tools");

    //Create adapter for ArrayList
    final ArrayAdapter<String> adapter = new ArrayAdapter<>(this,android.R.layout.simple_list_item_1, classes);

    //Insert Adapter into List
    dynamic.setAdapter(adapter);

    //set click functionality for each list item
    dynamic.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            Log.i("User clicked ", classes.get(position));
        }
    });



}
@覆盖
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//我们有我们的列表视图
最终ListView动态=findViewById(R.id.dynamic);
//创建一个元素数组
最终ArrayList类=新ArrayList();
添加(“数据结构”);
添加(“汇编语言”);
添加(“微积分3”);
类别。添加(“开关系统”);
添加(“分析工具”);
//为ArrayList创建适配器
最终ArrayAdapter=新的ArrayAdapter(这是android.R.layout.simple\u list\u item\u 1,类);
//将适配器插入到列表中
动态.setAdapter(适配器);
//为每个列表项设置单击功能
dynamic.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
Log.i(“用户点击”,classes.get(position));
}
});
}

@Amokrane Chentir:我找不到你。。。。。你能键入完整的程序吗。。。。thanks@KanNaN:当然可以,你能看看我的编辑是否对你更明确吗?@Amokrane Chentir:我认为必须在“findViewById”之前调用“setContentView”方法,否则将找不到ListView。List
 @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    //We have our list view
    final ListView dynamic = findViewById(R.id.dynamic);

    //Create an array of elements
    final ArrayList<String> classes = new ArrayList<>();
    classes.add("Data Structures");
    classes.add("Assembly Language");
    classes.add("Calculus 3");
    classes.add("Switching Systems");
    classes.add("Analysis Tools");

    //Create adapter for ArrayList
    final ArrayAdapter<String> adapter = new ArrayAdapter<>(this,android.R.layout.simple_list_item_1, classes);

    //Insert Adapter into List
    dynamic.setAdapter(adapter);

    //set click functionality for each list item
    dynamic.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            Log.i("User clicked ", classes.get(position));
        }
    });



}