Android开发 - List类中ArrayList实现类的动态数组操作与ArrayList<Fragment>的窗口列表操作解析
什么是ArrayList
- ArrayList 是 List 接口的一个常用实现类,它基于动态数组实现元素的存储和操作
主要特点和用途
-
动态大小:ArrayList的大小可以根据需要动态增长或缩减,与普通的数组不同,不需要预先指定数组的大小
-
泛型支持:可以使用泛型来指定ArrayList中存储的元素类型,例如
ArrayList<String>
表示一个字符串类型的动态数组 -
数据操作:提供了丰富的方法来操作数据,如添加、删除、获取元素等。可以使用
add()
方法添加元素,使用remove()
方法删除元素,使用get()
方法获取指定位置的元素等 -
迭代和遍历:可以通过迭代器(Iterator)或增强型for循环来遍历ArrayList中的所有元素,方便进行数据处理和操作
-
适用范围:在Android开发中,ArrayList广泛应用于存储和操作各种数据类型,如数据列表、Fragment列表、视图列表等
ArrayList的使用方式
import java.util.ArrayList;
public class ArrayListExample {
public static void main(String[] args) {
// 创建一个 ArrayList
List<String> arrayList = new ArrayList<String>();
// 添加元素到列表尾部
arrayList.add("Apple");
arrayList.add("Banana");
arrayList.add("Orange");
// 在指定位置插入元素
arrayList.add(1, "Mango");
// 遍历 ArrayList 并输出元素
for (String fruit : arrayList) {
System.out.println("Fruit: " + fruit);
}
// 删除指定位置的元素
arrayList.remove(0);
// 判断元素是否存在
boolean containsBanana = arrayList.contains("Banana");
System.out.println("Contains Banana: " + containsBanana);
// 获取列表大小
int size = arrayList.size();
System.out.println("ArrayList size: " + size);
}
}
ArrayList的三种遍历方式
//迭代器遍历
Iterator<Integer> it = numbers.iterator();
while(it.hasNext()){
System.out.print(it.next() + " ");
}
//索引值遍历
for(int i = 0; i < numbers.size(); i++){
System.out.print(numbers.get(i) + " ");
}
//增强型for循环遍历
for(Integer number : numbers){
System.out.print(number + " ");
}
- 遍历ArrayList时,通过索引值遍历效率最高,增强型for循环遍历次之,迭代器遍历最低
ArrayList<Fragment>的使用
-
ArrayList<Fragment>
通常用于管理和动态操作多个Fragment对象。以下是一个简单的使用案例,展示了如何使用ArrayList<Fragment>
来管理一组Fragment,并将它们传递给一个PagerAdapter用于ViewPager的显示 -
启动类Java代码:
import androidx.appcompat.app.AppCompatActivity; import androidx.viewpager.widget.ViewPager; import android.os.Bundle; import java.util.ArrayList; public class MainActivity extends AppCompatActivity { private ViewPager viewPager; private List<Fragment> fragmentList; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //创建了一个ViewPager用于显示多个Fragment viewPager = findViewById(R.id.viewPager); //初始化Fragment列表 //初始化了一个包含三个Fragment的ArrayList<Fragment>(这里假设Fragment1、Fragment2和Fragment3是已经实现的Fragment类) fragmentList = new ArrayList<Fragment>(); fragmentList.add(new Fragment1()); fragmentList.add(new Fragment2()); fragmentList.add(new Fragment3()); //设置ViewPager的适配器 //创建了FragmentPagerAdapter适配器,并将FragmentManager和ArrayList<Fragment>传递给它 FragmentPagerAdapter adapter = new FragmentPagerAdapter(getSupportFragmentManager(), fragmentList); //最后,将适配器设置给ViewPager,这样就可以在ViewPager中显示这三个Fragment了 viewPager.setAdapter(adapter); } }
-
布局xml代码:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <androidx.viewpager.widget.ViewPager android:id="@+id/viewPager" android:layout_width="match_parent" android:layout_height="match_parent" android:overScrollMode="never" /> </LinearLayout>
-
这种方式可以灵活地管理多个Fragment的显示顺序和数量,适用于需要在同一个屏幕上切换多个不同内容的场景,如主页的不同模块或者引导页等