Android:遍历listview中的所有项目

use*_*996 -4 android listview loops items

想要快速回答如何列出我的列表视图中的所有项目,以便打印列表或共享到记事本应用程序等.也就是说,从列表视图中获取以下信息的变量:"apple","banana" , "橙子".以下是我的列表视图.谢谢

    String[] values = new String[] { "apple", "banana", "orange" };

    listItems = new ArrayList<String>();
    for (int i = 0; i < values.length; ++i) {
        listItems.add(values[i]);
    }

    adapter = new ArrayAdapter<String>(this,
            android.R.layout.simple_list_item_1, android.R.id.text1,
            listItems);

    // Assign adapter to ListView
    listView.setAdapter(adapter);
Run Code Online (Sandbox Code Playgroud)

Yuv*_*Raj 7

你的问题说,

循环遍历列表视图中的所有项目.

我从你的代码知道你是想从添加项目String arrayArrayList.

但是,您可以直接将String数组作为第三个参数传递给您ArrayAdapter.

看看Android工作室提供的建议ArrayAdapter.你可以通过String[]ArrayList太:

在此输入图像描述

您可以传递String [],或者如果您想将所有String []项循环到ArrayList,您可以只使用一行.

    Collections.addAll(arrayList,values);
Run Code Online (Sandbox Code Playgroud)

arrayList -ArrayList

价值观 -String[]

代替,

    listItems = new ArrayList<String>();
    for (int i = 0; i < values.length; ++i) {
        listItems.add(values[i]);
    }
Run Code Online (Sandbox Code Playgroud)

在评论部分,你说

我想我可以一次添加/删除项目listView.

在这种情况下,您可以使用一些按钮重新加载列表以显示旧项目+添加新项目或显示除已删除项目之外的列表.我将在下面添加如何实现它.

AddMore在布局中有一个按钮,无论何时想要添加新项目,都可以这样做

button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                arrayList.add("lemon"); // this adds item lemon to arraylist
                arrayList.add("Pomgranete");
                arrayAdapter.notifyDataSetChanged(); // this will refresh the listview and shows the newly added items too
            }
        });
Run Code Online (Sandbox Code Playgroud)

你可以通过传递arrayList中项目的位置来类似地删除项目,

      arrayList.remove(arrayList.get(i)); // i is the position & note arrayList starts from 0
Run Code Online (Sandbox Code Playgroud)

所以,通过总结一切,这里是完整的工作代码:

public class MainActivity extends AppCompatActivity {

    ListView listView;
    String[] values = {"Apple", "Orange", "Banana"};
    List<String> arrayList;
    Button button;

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

        listView = (ListView)findViewById(R.id.listView);
        button = (Button)findViewById(R.id.button);
        arrayList = new ArrayList<String>();

        Collections.addAll(arrayList,values); // here you're copying all items from String[] to ArrayList

        final ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,arrayList);
        listView.setAdapter(arrayAdapter);

        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                arrayList.remove(arrayList.get(2)); // here i remove banana since it's position is two. My ordering of items is different so it removed banana. If i use ordering from your quest, it will remove orange.
                arrayList.add("lemon"); // adding lemon to list
                arrayList.add("Pomgranete"); // adding pomgranete
                arrayAdapter.notifyDataSetChanged(); // this used to refresh the listView
            }
        });

     }
    }
Run Code Online (Sandbox Code Playgroud)

activity_main.xml中

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
    android:layout_height="match_parent"  tools:context=".MainActivity">

    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="ADD MORE"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:id="@+id/button" />

    <ListView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/listView"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_above="@+id/button" />


</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)

输出:

列出预先定义的3个项目和一个按钮以加载更多项目.

在此输入图像描述

列出旧3项+新增2项(这里我没有使用arrayList.remove)

在此输入图像描述

列出旧项目除了已删除的项目+新添加的2项(这里我使用arrayList.remove删除香蕉arrayList.remove(arrayList.get(2));)

在此输入图像描述