用安卓写一个便签程序
来源:互联网 发布:公务员和程序员 编辑:程序博客网 时间:2024/06/05 16:10
为了练手,用安卓写一个便签程序,功能很简单,一个列表显示有多少便签,点击查看详细,长按能删除,列表界面点击添加按钮能新增。界面草图如下:
列表控件(ListView)
上网搜了一下,ListView的使用需要适配器,所以开始先搞定适配器。
适配器
根据列表的适配器类型,列表分为三种,ArrayAdapter,SimpleAdapter和SimpleCursorAdapter。
ArrayAdapter的用法:
public class MyListView extends Activity { private ListView listView; //private List<String> data = new ArrayList<String>(); @Override public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); listView = new ListView(this); listView.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_expandable_list_item_1,getData())); setContentView(listView); } private List<String> getData(){ List<String> data = new ArrayList<String>(); data.add("测试数据1"); data.add("测试数据2"); data.add("测试数据3"); data.add("测试数据4"); return data; }}
上面代码使用了ArrayAdapter(Context context, int textViewResourceId, List objects)来装配数据,要装配这些数据就需要一个连接ListView视图对象和数组数据的适配器来两者的适配工作,ArrayAdapter的构造需要三个参数,依次为this,布局文件(注意这里的布局文件描述的是列表的每一行的布局,android.R.layout.simple_list_item_1是系统定义好的布局文件只显示一行文字,数据源(一个List集合)。
此时的界面是这样:
监听ListView点击事件
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { // TODO Auto-generated method stub int a; }});
OnItemClickListener是一个接口,此处是用匿名类实现了此接口。也可以在外部定义一个implements 了此接口的类,此处传入该类的一个实例。另外,?是个通配符,可以用任何由Object派生的类型代替,相当于 Class< ? extends Object>。
1. arg0 当前的AdapterView对象,这里就是listView
2. arg1 是AdapterView所绑定的Adapter的getView方法返回的View,即当前item的view,通过它可以获得该项中的各个组件。例如view.textview.settext(“abc”);
3. arg2是当前被点击的条目的索引号
4. arg3是AdapterView所绑定的Adapter的getItemId返回的值,是当前item的ID。这个id根据你在适配器中的写法可以自己定义。例如:list.get(id).equals(“abc”){//Do Something…}
写到这里我想实现一个简单的功能,点击某个item时更改其文字,结果百思不得姐,最后发现需要更改数据源后再通知ArrayAdapter重新加载,直接上代码:
ListView v = (ListView)arg0;
mydata.set(arg2, mydata.get(arg2) + “*”);
ArrayAdapter< String> n = (ArrayAdapter< String>)v.getAdapter();
选项菜单
在AS的res目录上右键》new》android resource directory,里面选择menu,菜单资源必须放在menu目录下。再通过右键菜单添加xml文件,我的如下:
<?xml version="1.0" encoding="utf-8"?><menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"><item android:id="@+id/action_add" android:title="@string/menu_add" app:showAsAction="ifRoom" /></menu>```-item中的id="@+id/action_id"相当于mfc中的让ide自动分配资源id,会选择一个不存在的序号。然后在activity中调用:<div class="se-preview-section-delimiter"></div>
@Override
public boolean onCreateOptionsMenu(Menu menu){
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.mymenu, menu);
return super.onCreateOptionsMenu(menu);
}
添加消息响应:<div class="se-preview-section-delimiter"></div>
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_add:
Intent intent = new Intent(this, DetailActivity.class);
startActivity(intent);
return true;
default:
return super.onOptionsItemSelected(item);
}
}
“`
点击添加菜单项时调用添加activity
@Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.action_add: Intent intent = new Intent(this, DetailActivity.class); startActivity(intent); return true; default: return super.onOptionsItemSelected(item); } }
点击添加菜单项时调用添加activity
问题
contentProvider怎么定义?
Uri.parse中的content://怎么解释?
- 用安卓写一个便签程序
- 桌面便签程序详解
- Windows 7便签程序
- 从零开始写一个小米便签
- 便签
- 便签
- 便签
- 用java写的一个程序,可以调用windows系统中自带的各种工具,例如截图,便签等
- Android之仿小米便签程序
- 一个小小的移动web版便签
- 一个简单的android便签app
- 一个便签项目的源码解读
- Android语音便签快速调用-内置录音程序
- 桌面便签程序的实现详解和源码 (上)
- 桌面便签程序的实现详解和源码 (下)
- Android语音便签快速调用-内置录音程序
- 善用快捷键,玩转Windows 7 便签程序
- Webpack&React (五) 实现一个简单的便签应用
- 指针指向指针小结(适合刚接触C指针的新手)
- AMQP学习 & RabbitMQ 与 ActiveMQ、ZeroMQ以及Kafka的比较
- str()和represent()的区别
- 【ZOJ3949 The 17th Zhejiang University Programming Contest B】【树形DP】Edge to the Root 树上加一边 根距离之和尽可能小
- 总结CMake的常用命令,并介绍有用的CMake资源
- 用安卓写一个便签程序
- maven添加jar包到本地仓库及到项目中
- Java GC
- NavigationView 5.0属性新控件
- Ogre 利用 pixel buffer 绘制纹理
- Java JVM 运行机制及基本原理
- 请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
- 机器学习实战-k-近邻算法
- Ubuntu16.04安装编译ffmpeg