欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

android ListView和ProgressBar(进度条控件)的使用方法

程序员文章站 2022-07-11 19:34:56
listview控件的使用:listview控件里面装的是一行一行的数据,一行中可能有多列,选中一行,则该行的几列都被选中,同时可以触发一个事件,这种控件在平时还是用得很多...

listview控件的使用:
listview控件里面装的是一行一行的数据,一行中可能有多列,选中一行,则该行的几列都被选中,同时可以触发一个事件,这种控件在平时还是用得很多的。
使用listview时主要是要设置一个适配器,适配器主要是用来放置一些数据。使用起来稍微有些复杂,这里用的是android自带的simpleadapter,形式如下:
android.widget.simpleadapter.simpleadapter(context context, list<? extends map<string, ?>> data, int resource, string[] from, int[] to)
由此可以看出函数的第2个参数为一个list,该list里面存放的是一些hashmap,hashmap是一些映射,里面放的是键值对;第3个参数为1个布局文件,即适配器输出的布局;第4个参数为字符数组,数组的内容为参数list中map每列的列名;第5个参数为整型数组,其意思为第4个参数对应显示的值的格式,一般为控件。
因为第3个参数为1个布局文件,所以我们该工程中我们需要再单独添加一个xml文件。
同时我们要知道设置listview的监听器是用onlistitemclick()函数。
另外还需注意的是在java中定义数组类型并初始化时中间不需要等号,例如
new string[]{"user_name", "user_birthday"}。

这次实验的参考的是mars老师的资料.
listview使用的显示效果如下:
android ListView和ProgressBar(进度条控件)的使用方法

每次选中一行时在后台会相应的输出该行的位置和id,依次选中这三行.

后台输出为:
android ListView和ProgressBar(进度条控件)的使用方法

 
实验代码如下:
mainactivity.java:

复制代码 代码如下:

package com.example.control3;

import java.util.arraylist;
import java.util.hashmap;

import android.app.listactivity;
import android.os.bundle;
import android.view.view;
import android.widget.listview;
import android.widget.simpleadapter;

public class mainactivity extends listactivity {

    @override
    public void oncreate(bundle savedinstancestate) {
   super.oncreate(savedinstancestate);
   setcontentview(r.layout.activity_main);

   //建立一个arraylist,arraylist里面放的是hash表
   arraylist<hashmap<string, string>> list = new arraylist<hashmap<string,string>>();
   hashmap<string, string>map1 = new hashmap<string, string>();
   hashmap<string, string>map2 = new hashmap<string, string>();
   hashmap<string, string>map3 = new hashmap<string, string>();
   //给hash表中填入键值对
   map1.put("user_name", "小红");
   map1.put("user_birthday", "2012_07_30");
   map2.put("user_name", "小明");
   map2.put("user_birthday", "2012_07_31");
   map3.put("user_name", "小冬");
   map3.put("user_birthday", "2012_08_01");
   list.add(map1);
   list.add(map2);
   list.add(map3);
   //在该activity中创建一个简单的适配器
   simpleadapter listadapter = new simpleadapter(this, list,
   r.layout.activity_user, new string[]{
   "user_name", "user_birthday"}, new int[]
  {r.id.user_name, r.id.user_birthday});
   //载入简单适配器
   setlistadapter(listadapter);
    }

    //listview监听器响应函数
    @override
    protected void onlistitemclick(listview l, view v, int position, long id) {
   // todo auto-generated method stub
   super.onlistitemclick(l, v, position, id);
   system.out.println("id--------------------" +id);
   system.out.println("position-------------" + position);
    }
}



activity_main.xml:
复制代码 代码如下:

<linearlayout 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"
    android:orientation="vertical"
>
    <linearlayout
   android:id="@+id/listlinearlayout"
   android:layout_width="fill_parent"
   android:layout_height="wrap_content"
   android:orientation="vertical"
   >
  <listview
   android:id="@id/android:list"
   android:layout_width="fill_parent"
   android:layout_height="wrap_content"
   android:drawselectorontop="false"
   android:scrollbars="vertical"
  />
    </linearlayout>
</linearlayout>


activity_user.xml:
复制代码 代码如下:

<linearlayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="horizontal"
    android:padding="10dip"
>
    <!--
    该布局文件时水平方向上2个textview控件,并设置了其相应的属性
-->
    <textview
   android:id="@+id/user_name"
   android:layout_width="180dip"
   android:layout_height="30dip"
   android:textsize="10pt"
   android:singleline="true"
   />
    <textview
   android:id="@+id/user_birthday"
   android:layout_width="fill_parent"
   android:layout_height="fill_parent"
   android:textsize="10pt"
   android:gravity="right"
   />
</linearlayout>


 
progressbar控件的使用
progressbar控件的使用比较简单,在android开发中,其默认的形式是1个圆周型的进度条,也就是代表一直在等待,这时候是看不到实际上完成的进度的。所以在程序中我们可以设置进度条的形状,比如呈水平或者垂直。界面中有1个按钮,一开始时是看不到进度条的,当按下按钮时,会弹出2个进度条,1个呈水平状,一个还是圆形。且这2个进度条出现在按钮的上面,为什么会这样呢?因为这个activity布局中,采用的是线性布局,而那2个进度条是放在button的前面,只是一开始没有设置显示出来而已。继续按进度条时,进度条会前进。且这里进度条显示分为主进度条显示和次进度条显示。

实验的结果如下:
android ListView和ProgressBar(进度条控件)的使用方法

mainactivity.java:
复制代码 代码如下:

package com.example.control2;

import android.app.activity;
import android.os.bundle;
import android.view.view;
import android.view.view.onclicklistener;
import android.widget.button;
import android.widget.progressbar;

public class mainactivity extends activity {

    private int i = 0;
    private progressbar bar1 = null;
    private progressbar bar2 = null;
    private button button = null;
    @override
    public void oncreate(bundle savedinstancestate) {
   super.oncreate(savedinstancestate);
   setcontentview(r.layout.activity_main);
   bar1 = (progressbar)findviewbyid(r.id.bar1);
   bar2 = (progressbar)findviewbyid(r.id.bar2);
   button = (button)findviewbyid(r.id.btn);
   button.setonclicklistener(new mybuttononclicklistener());

    }

    class mybuttononclicklistener implements onclicklistener{

   public void onclick(view v) {
  if( 0 == i )
  {
 bar1.setvisibility(view.visible);
 bar2.setvisibility(view.visible);
  }
  else if( i < bar1.getmax() )
  {
 //设置主进度和次进度
 bar1.setprogress(i);
 bar1.setsecondaryprogress(i+10);
  }
  i+=10;
   }

    }
}



activity_main:
复制代码 代码如下:

<linearlayout 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"
    android:orientation="vertical"
    >

    <textview
   android:id="@+id/textview"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:text="@string/china"
   />
    <progressbar
   android:id="@+id/bar1"
   style="?android:attr/progressbarstylehorizontal"
   android:layout_width="fill_parent"
   android:layout_height="50dip"
   android:visibility="gone"
   />
    <progressbar
   android:id="@+id/bar2"
   style="?android:attr/progressbarstyle"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:visibility="gone"
   />
    <button
   android:id="@+id/btn"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:text="@string/button"
    />  
</linearlayout>



 总结:
通过这次实验,对listview和progressbar这2个进度条的使用有了个初步的了解,其中listview进度条的使用需要用的到适配器,而视频器的构造稍微有点复杂,需要对各个参数彻底的了解。

 作者:tornadomeet