技术标签: ListView checbox listView android listview getView Listview
这两天无聊的时候突然想到过年短信群发的问题,直接群发短信别人收到了肯定不会有什么感觉,但是如果在短信的前面加上每个的名字,那么收短信的人肯定不会是觉得你在群发短信,因此我就想到了做这样一简单的应用,在短信的前面加上每个收信人的姓名,这里的收信人全部从联系人中选取。在联系人的选取界面是一个简单的listview,其中每个条目有三个组件,第一个是checkbox用来选取其所在的联系人,后面两个是textview分别用来显示联系人的姓名和号码。下面是实现的代码
package com.example.myownmessage;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import com.example.service.ContactsInfo;
import com.example.valuebean.People;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.Toast;
import android.view.ViewGroup;
public class ListContacts extends Activity {
private CheckBox checkbox = null;
private Button done = null;
private ArrayList<People> groups = null; //将联系人对象也组成了一个数组
private ArrayList<String> names = new ArrayList<String>();
private ArrayList<String> numbers = new ArrayList<String>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.listcontacts);
checkbox = (CheckBox)this.findViewById(R.id.check);
done = (Button)this.findViewById(R.id.done);
ListView list = (ListView) this.findViewById(R.id.list);
ArrayList<Map<String,Object>> items = new ArrayList<Map<String,Object>>();
ContactsInfo info = new ContactsInfo(this);
info.getAllContacts();
groups = info.getContactsGroup();
for(int i = 0 ; i < groups.size();i++){
Map<String,Object> listitem = new HashMap<String,Object>();
listitem.put("name",groups.get(i).getName());
listitem.put("number",groups.get(i).getNumber());
listitem.put("isSelected", groups.get(i).isSelected());
items.add(listitem);
}
SimpleAdapter adapter = new SimpleAdapter(this,items,R.layout.item,new String []{"isSelected","name","number"},new int[]
{R.id.check,R.id.name,R.id.number}){
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
View view = super.getView(position, convertView, parent);
@SuppressWarnings("unchecked")
final HashMap<String,Object> map = (HashMap<String, Object>) this.getItem(position);
//获取相应View中的Checkbox对象
CheckBox checkBox = (CheckBox)view.findViewById(R.id.check);
checkBox.setChecked((Boolean) map.get("isSelected"));
//添加单击事件,在map中记录状态
//通过判断checkbox是否被选中来确定联系人是否被放在names和numbers两个数组中。
checkBox.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
map.put("isSelected", ((CheckBox)view).isChecked());
if(((CheckBox)view).isChecked()){
Toast.makeText(ListContacts.this,"选中了"+ map.get("name"), 0).show();
names.add((String) map.get("name"));
numbers.add((String) map.get("number"));
}else{
names.remove(map.get("name"));
numbers.remove(map.get("number"));
}
}
});
return view;
}
};
list.setAdapter(adapter);
done.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
Intent intent = new Intent();
Bundle bundle = new Bundle();
bundle.putStringArrayList("names", names);
bundle.putStringArrayList("numbers", numbers);
intent.putExtra("data", bundle);
ListContacts.this.setResult(200,intent);//将选择结果返回给上一个activity
ListContacts.this.finish();
}});
}
}
上面这段代码最为核心的就是自己构建了simpleadapter,并且重写了它的的getView方法,在这个方法里面为checkbox添加了监听器,当checkbox被选中的时候,将联系人的信息放进姓名和电话号码的list里面。
在完成这段代码之前,我也查看了很多其他人的博客,现在也慢慢的理解了一部分。被重写的getView方法它在什么时候调用的呢?就是在每一次item从屏幕外滑进屏幕内的时候,或者程序刚开始的时候创建第一屏item的时候。因此为每一个checkbox都注册了监听器,其中的参数ViewGroup parent 就是你设置adapter的那个组件里面封装一个viewGroup用来盛放item,position就是你选择的 item的第几条从0开始,convertView就是item上的布局layout或者组件。
qemu可以通过apt安装,也可以通过源码手动的configure然后make进行安装。前者方便,后者配置灵活度更高,推荐使用源码安装法
直接上代码:纵向渐变文字: <p class="tt">嗷嗷嗷嗷嗷</p> /******************************************/ <style> .tt{ background-image: linear-gradient(red,green);//背景色渐变,默认从上到下 ...
1.用ClippingNode可以实现上面的效果2.以标题作为模板,光效经过ClippingNode(裁剪节点),裁剪掉多余的部分3.附带上lua代码-- 1.创建模板、ClippingNode(裁剪节点) local stencil = display.newSprite("game_title.png") local clipper
下载链接已经失效,不过鄙人倒是有office2007大企业版,有兄弟需要告一声 2007 Microsoft Office System基础组件:Microsoft Office Access 2007 数据库管理程序Microsoft Office Excel 2007 信息分析程序Microsoft Office InfoPath 2007 信息收集程序Microsoft Office...
安装前需先确认系统安装java环境,若未安装,可点击查看文章:ubantu下安装java环境下载在elasticsearch官网选择需要的版本下载:wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.4.2.tar.gz解压在想要安装的路径下进行解压,命令如下:tar zxvf elast...
模仿的google的一个效果 http://www.google.cn/help/ig/art/ 基本完成 ................Imgmovea{ background-color:#EFEBEF;width:100px; height:135px; display:inline-table; zoom:1; text-align:center;te
绪论 转眼间,2016伴随着互联网寒冬和帝都的雾霾马上就过去了,不知道大家今年一整年过得怎么样?最近票圈被各个城市的雾霾刷屏,也被各个公司裁员、移动开发人员失业,互联网行业不景气等等刷爆了。作为一名Android开发的小白来说,内心难免会动荡,庆幸自己早出来一年,也担忧着自己的未来的职业规划。无所谓了,既然选择了这个行业,我觉得大家就应该坚持下去,路是自己走的,及时再寒冬,只要你足够优秀,足够努
truetrue表示不传递依赖,false或者没有表示传递依赖。可能会导致打jar包或者war包时,该依赖缺失。compilecompile:默认值,表示当前依赖包,要参与当前项目的编译,后续测试,运行时,打包provided:代表在编译和测试的时候用,运行,打包的时候不会打包进去test:表示当前依赖包只参与测试时的工作:比如Junitruntime:表示当前依赖包只参与运行周期,其他跳过了system:从参与度和provided一致,不过被依赖项不会从maven远程仓库下载,而是从本地的
关于oracle字符集乱码问题:1.OracleClient方式 存在乱码问题。(比如:当Oracle数据库服务器端采用英文字符集比如 US7ASCII 时,客户端不管字符集如何设置,读出的中文都是乱码;若服务器端用中文字符集比如 ZHS16GBK ,则无乱码问题。)2. OleDb方式 微软 为“provider=MSDAORA.1;” 存在乱码问题。 (比如:服务器oracle
什么是数据分析当中的“特征”
分类: OracleB.1. 服务器错误代码和消息服务器错误信息来自下述源文件:错误消息信息列在share/errmsg.txt文件中。“%d”和“%s”分别代表编号和字符串,显示时,它们将被消息值取代。错误值列在share/errmsg.txt文件中,用于生成include/mysqld_error.h和include/mysqld_ername.h MySQL源文件中的定义
从2015开始国内就开始慢慢接触Python了,从16年开始Python就已经在国内的热度更高了,目前也可以算的上"全民Python"了。众所周知小学生的教材里面已经有Python了,国家二级计算机证也需要学习Python了!因为Python简单、入门快,是不少程序员入门的首选语言。如果你想学Python,或者你刚开始学习Python,那么你可能会问:“我能用Python做什么?...