Android开发学习笔记(十一)ListView/ActivityManager/ArrayAdapter学习
16lz
2021-12-04
正在做一个Android的课程设计,主要功能是任务管理器,需要用到ActivityManager,所以就拿这个类来当作ListView的练习了。
本次的任务是将所有正在运行的进程添加到ArrayAdapter适配器,并在ListView中显示出来。
布局文件很简单,只有一个refresh按钮和一个ListView。
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" > <ListView android:id="@+id/myListView1" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_above="@+id/refresh" /> <Button android:id="@id/refresh" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="refresh" android:layout_alignParentBottom="true"/></RelativeLayout>
主活动MainActivity.java
package com.xujin.listviewtest;import java.util.ArrayList;import java.util.List;import android.app.Activity;import android.app.ActivityManager;import android.os.Bundle;import android.view.View;import android.widget.ArrayAdapter;import android.widget.Button;import android.widget.ListView;import android.widget.Toast;public class MainActivity extends Activity { private Button refresh; private ListView proList; private ArrayAdapter<String> arrayAdapter; private ArrayList<String> arrayListPro; private ActivityManager myActivityManager; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); refresh = (Button)findViewById(R.id.refresh); proList = (ListView)findViewById(R.id.myListView1); //获取正在运行的进程的信息并在ListView中显示出来 getRunningAppProcessInfo(); //为refresh按钮绑定监听器 refresh.setOnClickListener(new Button.OnClickListener() { @Override public void onClick(View v) { getRunningAppProcessInfo(); Toast toast = Toast.makeText(MainActivity.this,"refresh...", Toast.LENGTH_LONG); toast.show(); } }); } public void getRunningAppProcessInfo(){ myActivityManager = (ActivityManager)MainActivity.this.getSystemService(ACTIVITY_SERVICE); arrayListPro = new ArrayList<String>(); List<ActivityManager.RunningAppProcessInfo> mRunningPros = myActivityManager.getRunningAppProcesses();int i = 1;for (ActivityManager.RunningAppProcessInfo amPro : mRunningPros)arrayListPro.add("" + (i++) + ": "+ amPro.processName+ "(ID=" + amPro.pid +")"); arrayAdapter = new ArrayAdapter<String> (MainActivity.this, android.R.layout.simple_list_item_1, arrayListPro); proList.setAdapter(arrayAdapter); } }
下面做些许说明:
private Button refresh;
private ListView proList;
private ArrayAdapter<String> arrayAdapter;
private ArrayList<String> arrayListPro; //String类型的数组
private ActivityManager myActivityManager;
ArrayAdapter(数组适配器)最简单的应用是用于显示一行文本信息。
public ArrayAdapter(Context context,int textViewResourceId,List<T> objects)
第一个参数是上下文,第二个参数是要显示的xml,第三个参数是提供要在xml显示的内容,为一个List<T>类型的数据。
更详细的解释:
public void getRunningAppProcessInfo(){ //getSystemService(ACTIVITY_SERVICE)的到系统的服务信息,数据类型是ActivityManager myActivityManager = (ActivityManager)MainActivity.this.getSystemService(ACTIVITY_SERVICE); //新建一个String类型的ArrayList,用来存放数据 arrayListPro = new ArrayList<String>(); //myActivityManager.getRunningAppProcesses()取出的数据类型是List<ActivityManager.RunningAppProcessInfo>的List<ActivityManager.RunningAppProcessInfo> mRunningPros = myActivityManager.getRunningAppProcesses();int i = 1;//顺序枚举每个元素,使用ArrayList<String>类型的add方法添加元素for (ActivityManager.RunningAppProcessInfo amPro : mRunningPros)arrayListPro.add("" + (i++) + ": "+ amPro.processName+ "(ID=" + amPro.pid +")"); arrayAdapter = new ArrayAdapter<String> (MainActivity.this, android.R.layout.simple_list_item_1, arrayListPro); //用setAdapter()将ListView和Adapter绑定proList.setAdapter(arrayAdapter); }
源文件:ListView.zip
更多相关文章
- mybatisplus的坑 insert标签insert into select无参数问题的解决
- Python技巧匿名函数、回调函数和高阶函数
- python list.sort()根据多个关键字排序的方法实现
- 使用User Agent分辨出Android设备类型的安全做法
- Android之UI学习篇二:TextVeiw显示表情和跑马灯效果
- Unity3D研究院之与Android相互传递消息(十九)
- 详解android:scaleType属性
- android使用WebView显示sdcard的html文件
- Android(安卓)CountDownTimer带有动画的倒计时