您的位置:首页 > 其它

安卓控件使用系列34:ListView列表控件显示表单的使用方法1

2015-10-04 12:02 567 查看
在安卓应用程序中经常会看到数据列表,那么我们怎么来实现这样的操作呢,下面我们将使用方法给大家分享一下。

安卓中共有三个列表控件:ListView、ExpandableListView、Spinner

使用ListView显示数据列表的时候用到MVC模式:为ListView提供数据的List或数组是M(模型,Model)、ListView是V(视图,View)用于显示数据、Adapter对象相当于C(控制器,Controller),Adapter是一个在LIstView和数据之间的一个桥梁。

MVC好处:MVC把应用程序的逻辑层和界面完全分开,界面设计人员直接参与界面开发,程序员把精力放在逻辑层开发,而不是程序员全权负责界面和逻辑层的开发。

视图层(View):使用xml文件进行界面的描述,使用的时候可以方便的引入。

控制层(Controller):指Activity,通过Activity交给Model业务逻辑层处理。Andriod中Activity的响应时间是5s,如果耗时的操作放在这里,程序就很容易回收掉。如获取网络上的数据比较耗时,不能在这里编写。

模型层(Model):对数据库的操作,对网络等的操作都应该放在Model里面处理。

ArrayAdapter类的其中一个常用的构造方法:ArrayAdapter(上下文对象,显示的样式,数据源),显示的样式是系统自带的layout中的一些样式。

ListView控件对单个选型进行监听的三个事件分别是:setOnItemClickListener(点击某个选项时触发的事件)、setOnItemLongClickListener(长按某个选项时触发的事件)、setOnItemSelectedListener(选择某个选项时触发的事件)。

android.R.layout中涉及到的ListView控件的样式有很多,比较常用的三种样式分别是:simple_list_item_1(没有任何其他格式的简单显示格式)、simple_list_item_single_choice(带有单选框的显示格式)、simple_list_item_multiple_choice(带有多选框的显示格式)。在适配器中对这个显示格式进行设置之后,对ListView控件使用setChoiceMode方法进行对应格式的设置才有效。

这个例子实现的是在页面显示数据列表,并可以实现多选,长按某一个选型会弹出信息。

整体思路:在xml文件中添加一个ListView控件,新建一个java类MyDataSource,在里面定义一个方法返回一个字符串类型的数组,在活动中定义一个适配器,定义一个数组用于获取MyDataSource类中返回的字符串数组,并把这个数组以复选框的格式绑定到这个适配器上,设置ListView控件的选择方式,将适配器绑定到ListView控件上,设置setOnItemLongClickListener这个事件(长按某个选项触发的事件),在这个事件中输出信息。这样就完成了数据列表的显示并可以多选、长按输出信息的效果。

activity_main.xml文件:

<ListView
android:id="@+id/listview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
></ListView>
MainActivity.java文件:

private ListView listView;
private ArrayAdapter<String> adapter;
private List<String> data=null;//数据源
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
data=MyDataSource.getDataSource();//给数据源赋值
//给适配器绑定数据源,并使用单选的样式
//adapter=new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_list_item_single_choice,data);
//多选的样式
adapter=new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_list_item_multiple_choice,data);
listView=(ListView)findViewById(R.id.listview);
//给listview加一个单选的样式(给每一个选项添加单选操作)
//listView.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
//多选的样式(添加了复选框的操作)
listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
listView.setAdapter(adapter);
listView.setOnItemLongClickListener(new OnItemLongClickListener() {

@Override
public boolean onItemLongClick(AdapterView<?> arg0, View arg1,
int arg2, long arg3) {
// TODO Auto-generated method stub
Toast.makeText(MainActivity.this, "click me", 1).show();
return false;
}
});
}


MyDataSource.java文件:

public class MyDataSource {

public MyDataSource() {
// TODO Auto-generated constructor stub
}

public static List<String> getDataSource(){
List<String> list=new ArrayList<String>();
list.add("北京");
list.add("上海");
list.add("广州");
list.add("深圳");
list.add("杭州");
list.add("苏州");
return list;
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: