Android综合项目乐学成语(二)
2016-06-14 16:49
477 查看
在完善Android综合项目乐学成语的过程中,虽然还是遇到了一些问题,但都是因自己的马虎导致程序报错,通过查找修改得到了解决。要注意在学习列表中adapter包下适配器的应用。在下面代码中,需要注意的是在getView方法中,首先通过getItem()方法得到当前项的Category实例 ,在下面代码中还新增了一个内部类ViewHolder,用于对控件的实例进行缓存。当convertView为空的时候,创建一个ViewHolder对象,并将控件的实例放在ViewHolder里,然后调用view的setTag()方法,将viewHolder对象存储在view中。当convertView不为空的时候则调用View的getTag()方法,把viewHolder重新取出。
还要注意的是StudyActivity中的点击事件处理代码如下:
此代码主要是设置了布局动画,引用了之前的Alpha动画,设置每一项时间间隔和出现的顺序。
下面是创建的StudyAnimalActivity的一些主要代码:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_animal);
initAnimals();
lvAnimalList = (ListView) findViewById(R.id.IvAnimalList);
AnimalAdapter animalAdapter = new AnimalAdapter(this,
R.layout.animal_item, animalList);
lvAnimalList.setAdapter(animalAdapter);
lvAnimalList.setOnItemClickListener(new OnItemClickListener() {
在这里添加了一个initAnimals()方法,用于初始化所有的动物数据。然后获取ListView控件,建立AnimalAdapter关联子布局及数据,调用ListView控件的setAdapter()方法与关联数据。
下面为整个乐学成语界面的显示:
当运行点击每个成语并不弹出对话框,通过geogle搜索发现是因为在列表相中如果出现类似于按钮这种能够获取焦点的组建时,就会出现无法单击每一表项的情况。
解决方法是,修改AnimalAdapter类,加入如下的代码:
viewHolder.btnSave.setFocusable(flase);
viewHolder.btnSave.setFocusableInTouchMode(flase);
public View getView(int position, View convertView, ViewGroup parent) { Category category = getItem(position);// 获取当前项目的category的实例 View view ; ViewHolder viewHolder; if(convertView==null){ view = LayoutInflater.from(getContext()).inflate(resourceld, null); viewHolder = new ViewHolder(); viewHolder.categoryImage = (ImageView)view .findViewById(R.id.category_image); viewHolder.categoryName = (TextView)view .findViewById(R.id.category_name); view.setTag(viewHolder);//将ViewHolder存储在View中 }else{ view = convertView; viewHolder = (ViewHolder)view.getTag(); } viewHolder.categoryImage.setImageResource(category.getImageId()); viewHolder.categoryName.setText(category.getName()); return view; }
还要注意的是StudyActivity中的点击事件处理代码如下:
switch (position) { case 0: Intent intent = new Intent(StudyActivity.this, StudyAnimalActivity.class); startActivity(intent); break; default: break; }在乐学成语中还要注意Alpha动画的设置,从无到有的过程,代码如下:
<layoutAnimation xmlns:android="http://schemas.android.com/apk/res/android" android:animation="@anim/anim_listview" android:animationOrder="random" android:delay="0.2">
此代码主要是设置了布局动画,引用了之前的Alpha动画,设置每一项时间间隔和出现的顺序。
下面是创建的StudyAnimalActivity的一些主要代码:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_animal);
initAnimals();
lvAnimalList = (ListView) findViewById(R.id.IvAnimalList);
AnimalAdapter animalAdapter = new AnimalAdapter(this,
R.layout.animal_item, animalList);
lvAnimalList.setAdapter(animalAdapter);
lvAnimalList.setOnItemClickListener(new OnItemClickListener() {
在这里添加了一个initAnimals()方法,用于初始化所有的动物数据。然后获取ListView控件,建立AnimalAdapter关联子布局及数据,调用ListView控件的setAdapter()方法与关联数据。
下面为整个乐学成语界面的显示:
当运行点击每个成语并不弹出对话框,通过geogle搜索发现是因为在列表相中如果出现类似于按钮这种能够获取焦点的组建时,就会出现无法单击每一表项的情况。
解决方法是,修改AnimalAdapter类,加入如下的代码:
viewHolder.btnSave.setFocusable(flase);
viewHolder.btnSave.setFocusableInTouchMode(flase);
相关文章推荐
- Android图片下载缓存库picasso解析
- Android Loader异步装载
- Android入门:Activity四种启动模式
- android自定义控件(一) 入门
- Android 无限循环ViewPager报错跳坑。
- FragmentTabHost类实现android中Fragment的动态加载
- android studio命令打包(gradle)
- Android 对ScrollView滚动监听,实现美团、大众点评的购买悬浮效果
- android悬浮窗口的实现
- Android 代码规范
- Android的 PackageManager 和ActivityManager的功能介绍
- Android开发中,有哪些让你觉得相见恨晚的方法、类或接口
- android( java) 处理 null 和 预防空指针异常(NullPointerException) 的一些经验。
- Android之Fragment(二):动态加载碎片
- Android音视频之MediaRecorder音视频录制
- 使用DX 编译 Android应用
- Android消息机制初步分析
- AndroidStudio引入so文件
- Android,如何在代码中获取attr属性的值
- android 获取手机通讯录以及 6.0 授权