乐读文学

Android从入门到精通

乐读文学 > 科普学习 > Android从入门到精通

第54页

书籍名:《Android从入门到精通》    作者:明日科技




public  Object  getItem(int  position)  {



return  position;



}



/*



*  获得数量



*/



@Override



public  int  getCount()  {



return  imageId.length;



}



};

(6)将步骤(5)中创建的适配器与GridView关联,并且为了在用户单击某张图片时显示对应的位置,还需要为GridView添加单击事件监听器,具体代码如下:

gridview.setAdapter(adapter);  //将适配器与GridView关联



gridview.setOnItemClickListener(new  OnItemClickListener()  {



@Override



public  void  onItemClick(AdapterView  parent,  View  view,  int  position,long  id)  {



imageSwitcher.setImageResource(imageId[position]);  //显示选中的图片



}



});

运行本实例,将显示类似于Windows  7提供的图片预览窗格效果,单击任意一张图片,可以在右侧显示该图片的预览效果,如图4.27所示。



图4.27 仿Windows  7图片预览窗格效果

4.3.2 状态栏中显示代表登录状态的图标

例4.17   在Eclipse中创建Android项目,名称为4.17,实现仿手机QQ登录状态显示功能。(实例位置:光盘\TM\sl\4\4.17)

(1)修改新建项目的res\layout目录下的布局文件main.xml,将默认添加的布局代码删除,然后添加一个TableLayout表格布局管理器,并且在该布局管理器中添加3个TableRow表格行,接下来在每个表格行中添加用户登录界面相关的组件,最后设置表格的第1列和第4列允许被拉伸。由于此处的代码与第3章的例3.6的布局代码基本相同,所以这里不再给出,具体的代码可以参见本书附带光盘。

(2)在主活动中,定义一个整型的常量(记录通知的id)、一个String类型的变量(记录用户名)和一个通知管理器对象,关键代码如下:

final  int  NOTIFYID_1  =  123;  //第一个通知的id



private  String  user="匿名";  //用户名



private  NotificationManager  notificationManager;  //定义通知管理器对象

(3)在主活动的onCreate()方法中,首先获取通知管理器,然后获取“登录”按钮,并为其添加单击事件监听器,在重写的onClick()方法中获取输入的用户名并调用自定义方法sendNotification()发送通知,具体代码如下:

//获取通知管理器,用于发送通知



notificationManager  =  (NotificationManager)  getSystemService(NOTIFICATION_SERVICE);



Button  button1  =  (Button)  findViewById(R.id.button1);  //获取“登录”按钮



//为“登录”按钮添加单击事件监听器



button1.setOnClickListener(new  View.OnClickListener()  {



@Override



public  void  onClick(View  v)  {



EditText  etUser=(EditText)findViewById(R.id.user);  //获取“用户名”编辑框



if(!"".equals(etUser.getText())){



user=etUser.getText().toString();



}



sendNotification();  //发送通知



}



});

(4)编写sendNotification()方法,在该方法中,首先创建一个AlertDialog.Builder对象,并为其指定要显示对话框的图标、标题等,然后创建两个用于保存列表项图片id和文字的数组,并将这些图片id和文字添加到List集合中,再创建一个SimpleAdapter简单适配器,并将该适配器作为Builder对象的适配器用于为列表对话框添加带图标的列表项,最后创建对话框并显示。sendNotification()方法的具体代码如下:

//发送通知



private  void  sendNotification()  {



Builder  builder  =  new  AlertDialog.Builder(MainActivity.this);



builder.setIcon(R.drawable.advise);  //设置对话框的图标



builder.setTitle("我的登录状态:");  //设置对话框的标题



final  int[]  imageId  =  new  int[]  {  R.drawable.img1,  R.drawable.img2,



R.drawable.img3,  R.drawable.img4  };  //定义并初始化保存图片id的数组



final  String[]  title  =  new  String[]  {  "在线",  "隐身",  "忙碌中",  "离线"  };  //定义并初始化保存列表项文字的数组



List>  listItems  =  new  ArrayList>();  //创建一个List集合



//通过for循环将图片id和列表项文字放到Map中,并添加到List集合中



for  (int  i  =  0;  i  <  imageId.length;  i++)  {



Map  map  =  new  HashMap();  //实例化map对象



map.put("image",  imageId[i]);



map.put("title",  title[i]);



listItems.add(map);  //将map对象添加到List集合中



}



final  SimpleAdapter  adapter  =  new  SimpleAdapter(MainActivity.this,



listItems,  R.layout.items,  new  String[]  {  "title",  "image"  },



new  int[]  {  R.id.title,  R.id.image  });  //创建SimpleAdapter



builder.setAdapter(adapter,  new  DialogInterface.OnClickListener()  {