第54页
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