Android(安卓)列表片段

静态库支持框架的 ListFragment 版本。用于编写在 Android 3.0 之前的平台上运行的应用程序。当在 Android 1.0 或更高版本上运行时,仍使用此实现。

列表片段的基本实现用于创建片段中的项目列表。


实例

这个例子将解释如何基于 arrayAdapter 创建自己的列表片段。因此,让我们按照以下步骤来创建 Hello World 实例:

步骤描述
1您将使用 Android Studio 创建一个 Android 应用程序,并在 com.cankaoshouce.helloworld 包下将其命名为 HelloWrold,Activity 为空。
2修改已放置在 res/values/string.xml 的字符串文件以添加新的字符串常量。
3res/layout 目录下创建一个名为 list_fragment.xml 的布局,以定义列表片段。并将片段标签(<fragment>)添加到您的 activity_main.xml
4创建一个 myListFragment.java,它位于 java/myListFragment.java,它包含 onCreateView()onActivityCreated()OnItemClickListener()
5运行该应用程序以启动 Android 模拟器并验证在该应用程序中所做更改的结果。

在开始编码之前,我们将在 res/values 目录下的 string.xml 文件中初始化字符串常量。

  1. <resources>
  2. <string name="app_name">HelloWorld</string>
  3. <!-- TODO: Remove or change this placeholder text -->
  4. <string name="action_settings">Settings</string>
  5. <string name="hello_world">Hello world!</string>
  6. <string name="imgdesc">imgdesc</string>
  7. <string-array name="Planets">
  8. <item>太阳</item>
  9. <item>水星</item>
  10. <item>金星</item>
  11. <item>地球</item>
  12. <item>火星</item>
  13. <item>木星</item>
  14. <item>土星</item>
  15. <item>天王星</item>
  16. <item>海王星</item>
  17. </string-array>
  18. </resources>

以下是 res/layout/activity_main.xml 文件的内容。它包含线性布局和片段标签。

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. xmlns:tools="http://schemas.android.com/tools"
  4. android:layout_width="match_parent"
  5. android:layout_height="match_parent"
  6. android:paddingLeft="@dimen/activity_horizontal_margin"
  7. android:paddingRight="@dimen/activity_horizontal_margin"
  8. android:paddingTop="@dimen/activity_vertical_margin"
  9. android:paddingBottom="@dimen/activity_vertical_margin"
  10. tools:context=".MainActivity">
  11. <fragment
  12. android:id="@+id/fragment1"
  13. android:name="com.cankaoshouce.helloworld.MyListFragment"
  14. android:layout_width="match_parent"
  15. android:layout_height="match_parent" />
  16. </RelativeLayout>

以下是 res/layout/list_fragment.xml 文件的内容。它包含线性布局,列表视图和文本视图:

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout
  3. xmlns:android="http://schemas.android.com/apk/res/android"
  4. android:layout_width="match_parent"
  5. android:layout_height="match_parent"
  6. android:orientation="vertical" >
  7. <ListView
  8. android:id="@android:id/list"
  9. android:layout_width="match_parent"
  10. android:layout_height="wrap_content" >
  11. </ListView>
  12. <TextView
  13. android:id="@android:id/empty"
  14. android:layout_width="match_parent"
  15. android:layout_height="wrap_content" >
  16. </TextView>
  17. </LinearLayout>

以下是 src/main/java/myListFragment.java 文件的内容。在编写代码之前,需要遵循以下几个步骤:

  • 创建一个类 MyListFragment 并将其继承 ListFragment
  • onCreateView() 方法内部,使用上面定义的 list_fragment.xml 布局填充视图。
  • onActivityCreated() 方法中,从资源创建一个 arrayadapter,即使用 R.array.planet,您可以在 string.xml 内找到它,并将此适配器设置为 listview,还可以设置 onItem 单击 Listener
  • OnItemClickListener() 方法内部,显示一条正在单击的带有条目名称的消息。
  1. package com.cankaoshouce.helloworld;
  2. import android.os.Bundle;
  3. import android.view.LayoutInflater;
  4. import android.view.View;
  5. import android.view.ViewGroup;
  6. import android.widget.AdapterView;
  7. import android.widget.ArrayAdapter;
  8. import android.widget.Toast;
  9. import androidx.fragment.app.ListFragment;
  10. /**
  11. * 表示项目列表的片段。
  12. */
  13. public class MyListFragment extends ListFragment implements AdapterView.OnItemClickListener {
  14. @Override
  15. public View onCreateView(LayoutInflater inflater,
  16. ViewGroup container, Bundle savedInstanceState) {
  17. View view = inflater.inflate(R.layout.list_fragment, container, false);
  18. return view;
  19. }
  20. @Override
  21. public void onActivityCreated(Bundle savedInstanceState) {
  22. super.onActivityCreated(savedInstanceState);
  23. ArrayAdapter adapter = ArrayAdapter.createFromResource(getActivity(), R.array.Planets, android.R.layout.simple_list_item_1);
  24. setListAdapter(adapter);
  25. getListView().setOnItemClickListener(this);
  26. }
  27. @Override
  28. public void onItemClick(AdapterView parent, View view, int position,long id) {
  29. Toast.makeText(getActivity(), "Item: " + position, Toast.LENGTH_SHORT).show();
  30. }
  31. }

下面是 MainActivity.java 文件的内容:

  1. package com.cankaoshouce.helloworld;
  2. import android.os.Bundle;
  3. import androidx.appcompat.app.AppCompatActivity;
  4. public class MainActivity extends AppCompatActivity {
  5. @Override
  6. protected void onCreate(Bundle savedInstanceState) {
  7. super.onCreate(savedInstanceState);
  8. setContentView(R.layout.activity_main);
  9. }
  10. }

运行应用程序

让我们尝试运行我们刚刚创建的 HelloWorld 应用程序。我假设您是在进行环境设置时创建的 AVD。要从 Android Studio 运行该应用,请打开您项目的 Activity 文件之一,然后运行图标从工具栏中单击 Eclipse Run Icon 图标。Android 在您的 AVD 上安装该应用程序并启动它,如果您的设置和应用程序一切正常,它将在 "模拟器" 窗口中显示:

分类导航