ListActivity类的用法
来源:互联网 发布:富豪移民 知乎 编辑:程序博客网 时间:2024/06/05 16:37
一、ListActivity类继承Activity类,默认绑定了一个ListView(列表视图)界面组件,并提供一些与列表视图、处理相关的操作。
一般首界面才用ListActivity。ListActivity中默认绑定ListView,其listView界面组件中的每一行(row)都可以被选择。我们可以借由设置一个onListItemClick方法,来得到用户正选择了哪一列的信息,并做后续处理。
列表视图在手持设备上运用很多,诸如在手机屏幕上显示通信录列表或电话列表,并让用户从中选择的动作,都属于ListActivity管理范围。开发者在开发常用的列表视图画面时,直接使用ListActivity类来开始,会比从Activity类来开始方便许多。
二、ListActivity:
封装了一个ListView和一个TextView(没有数据时提示)
注意:①给ListView设置适配器:setListAdapter();
②设置ListView的item点击事件:onListItemClick
比起Activity,ListActivity实现时需要注意以下几点:
1、ListActivity不用加载布局,即省略了setContentView(R.layout.main),它默认是LIstView占满屏。
2、如果想在屏幕中显示其他控件,如文本框和按钮之类,可以采用如下方法:
a、代码中添加:setContentView(R.layout.main)
b、在 main_activity.xml 文件中,添加一个ListView控件,和一个 TextView 控件,注意它们 id 必须为”@id/android:list”、”@id/android:empty”;前一个表示匹配的ListView,后一个表示若ListView没有内容则显示的提示。
如果想在屏幕中显示其他控件时activity_main.xml文件中的书写一定要注意listView和textView的id
<LinearLayout> <ListView android:id="@id/android:list"android:layout_width="match_parent"android:layout_height="0dp" android:layout_weight="1" /> <TextView android:id="@id/android:empty" android:layout_width="wrap_content"android:layout_height="wrap_content" android:text="Can not find the file!" /></LinearLayout>
MainActivity中的代码如下:
package org.moblie.train.zday10_listactivity;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import android.app.ListActivity;import android.os.Bundle;import android.view.View;import android.widget.ListView;import android.widget.Toast;public class MainActivity extends ListActivity { private List<Map<String, String>> list = new ArrayList<Map<String, String>>(); private MyAdapter adapter; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // 若在main_activaty.xml中不添加其他控件时,ListActivity默认有ListView和TextView,故此处不用加载布局。 // setContentView(R.layout.activity_main); initData(); initViews(); } private void initViews() { adapter = new MyAdapter(this, list); // 此处直接调用setListAdapter。如果listView时通常先初始化listView,然后这么写:listView.setAdapter(adapter); setListAdapter(adapter); /** * // 注意:ListActivity中Item的监听与ListView也有不同。 若是listView通畅这么写: * getListView().setOnItemClickListener(new OnItemClickListener() { * * public void onItemClick(AdapterView<?> parent, View view, int * position, long id) { } }); */ } // ListActivity中对Item的监听这么写: @Override protected void onListItemClick(ListView l, View v, int position, long id) { super.onListItemClick(l, v, position, id); // 以下是两种获取Item内容的方式: // 1.从适配器中获取Item数据(Map) Map map = (Map) adapter.getItem(position); // 或者 2.从ListView中获得数据 Map mapInList = (Map) l.getItemAtPosition(position); String str = map.get("textView1") + ":" + map.get("textView2"); Toast.makeText(MainActivity.this, str, 0).show(); // makeText()的第三个参数用于设置显示时间,其中 // Toast.LENGTH_LONG可以用1代替 // Toast.LENGTH_SHORT可以用0代替 } // 这个方法初始化数据用于给每个Item填充值 private void initData() { for (int i = 0; i < 15; i++) { Map<String, String> map = new HashMap<String, String>(); map.put("textView1", "this is " + i); map.put("textView2", "position is " + i); list.add(map); } }}
item_listview.xml文件中的代码:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="TextView" /> <TextView android:id="@+id/textView2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="TextView" /></LinearLayout>
MyAdapter中的代码:
package org.moblie.train.zday10_listactivity;import java.util.List;import java.util.Map;import android.content.Context;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.TextView;public class MyAdapter extends BaseAdapter { private List<Map<String, String>> list; private Context contenxt; private LayoutInflater inflater; public MyAdapter(Context context, List<Map<String, String>> list) { this.contenxt = context; this.list = list; inflater = (LayoutInflater) context .getSystemService(Context.LAYOUT_INFLATER_SERVICE); } @Override public int getCount() { return list == null ? 0 : list.size(); } @Override public Object getItem(int position) { return list.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder = null; if (convertView == null) { holder = new ViewHolder(); convertView = inflater.inflate(R.layout.item_listview, parent, false); holder.textView1 = (TextView) convertView .findViewById(R.id.textView1); holder.textView2 = (TextView) convertView .findViewById(R.id.textView2); convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); } holder.textView1.setText(list.get(position).get("textView1")); holder.textView2.setText(list.get(position).get("textView2")); return convertView; } class ViewHolder { private TextView textView1; private TextView textView2; }}
- ListActivity类的用法
- listActivity和ExpandableListActivity的用法
- listActivity和ExpandableListActivity的简单用法
- listActivity和ExpandableListActivity的简单用法
- listActivity和ExpandableListActivity的简单用法
- 安卓开发之基于ListActivity的LIstView的用法
- ListActivity的使用
- android的listactivity实例
- ListActivity的应用
- ListActivity的使用介绍
- ListActivity的使用
- 设置 ListActivity的setEmptyView()
- ListActivity的使用
- ListActivity的使用
- ListActivity的使用
- ListActivity的使用
- 关于ListActivity的创建
- ListActivity的使用方法
- libpng warning: iCCP: known incorrect sRGB profile
- DELL装win7系统
- C# Graphics 放大和旋转
- Linux_Process_Management_blog
- CF#202 div2 B Color the Fence
- ListActivity类的用法
- 安卓设置videoview全屏
- 《第一行代码》实用知识
- 【linux】编译安装python3.5交互模式下方向键乱码
- Zookeeper的Paxos分布式一致性算法-类比的方式去理解
- 初见memcached
- JQuery与HTML元素的获取、设置、添加、删除
- 在子线程中如何使用Handler将一个包含对象的集合传递给主线程
- android application 属性详解