您的位置:首页 > 移动开发 > Android开发

Android综合项目乐学成语(二)

2016-06-14 16:49 477 查看
              在完善Android综合项目乐学成语的过程中,虽然还是遇到了一些问题,但都是因自己的马虎导致程序报错,通过查找修改得到了解决。要注意在学习列表中adapter包下适配器的应用。在下面代码中,需要注意的是在getView方法中,首先通过getItem()方法得到当前项的Category实例 ,在下面代码中还新增了一个内部类ViewHolder,用于对控件的实例进行缓存。当convertView为空的时候,创建一个ViewHolder对象,并将控件的实例放在ViewHolder里,然后调用view的setTag()方法,将viewHolder对象存储在view中。当convertView不为空的时候则调用View的getTag()方法,把viewHolder重新取出。

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);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: