乐学成语——第四部分

    1.(1) 经过前面的设计,我们已经完成了Animal实体类及AnimalDao数据访问类的创建,接下来我们要做的事情是将数据库中所有的动物类成语显示在界面上。在layout下新建activity_animal.xml文件,主要添加了一个ListView控件。

<span style="font-family:KaiTi_GB2312;font-size:18px;"><ListView 
        android:id="@+id/lvAnimalList"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layoutAnimation="@anim/anim_layout_listview"
        android:listSelector="#00000000"
        ></ListView></span>

   (2)然后需要为ListView的子项指定一个我们自定义的布局,在layout目录下新建animal_item.xml.在这个布局中,我们定义了一个TextView用于显示成语的名称,又定义了一个ImageButton用于显示收藏按钮。

<span style="font-family:KaiTi_GB2312;font-size:18px;"> <TextView 
        android:id="@+id/tvName"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:gravity="center"
        android:text="助人为乐"
        android:textAppearance="?android:attr/textAppearanceLarge"/>
    <ImageButton
        android:id="@+id/btnSave"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@null"
        android:layout_alignParentRight="true"
        android:layout_alignTop="@+id/tvName"
        android:src="@drawable/btnsave"/>   </span>

   (3)接下来需要在应用的包下创建adapter包,在该包下创建一个自定义的适配器,这个适配器继承自ArrayAdapter,并将泛型指定为Animal类,新建类AnimalAdapter。AnimalAdapter的实现过程与CategoryAdapter的实现非常相似。

   (4)在activity包下新建StudyActivity继承自Activity,这里添加了一个initAnimals()方法,用于初始化所有的动物数据,然后获取ListView控件,建立AnimalAdapter关联子布局及数据,调用ListView控件的setAdapter()方法与关联数据。

   (5)接下来我们修改一下StudyActivity中的点击事件。

<span style="font-family:KaiTi_GB2312;font-size:18px;">	switch(position){					
					case 0:
						Intent intent=new Intent(StudyActivity.this,StudyAnimalActivity.class);					
					startActivity(intent);
					break;
					default:
						break;	
					//Category category=categoryList.get(position);			
					//Toast.makeText(StudyActivity.this, category.getName(),Toast.LENGTH_LONG).show();
				}
				}</span>

重新运行程序出现这个界面。


   (6)此时点击收藏按钮没有任何反应,接下来让我们一起来处理一下点击事件。修改AnimalAdapter类,加入事件处理。

<span style="font-family:KaiTi_GB2312;font-size:18px;">public class AnimalAdapter extends ArrayAdapter<Animal> {
	private int resourceId;
	private Context context;
	public AnimalAdapter(Context context,int resource,List<Animal>objects){
		super(context,resource,objects);
		this.context=context;
		resourceId=resource;
	}
	public View getView(int position,View convertView,ViewGroup parent){
	    final Animal animal=getItem(position);//获取当前项的Animal实例
		View view;
		ViewHolder viewHolder;
		if(convertView==null){
			view=LayoutInflater.from(getContext()).inflate(resourceId, null);
			viewHolder=new ViewHolder();
			viewHolder.tvName=(TextView) view.
					findViewById(R.id.tvName);
			viewHolder.btnSave=(ImageButton) view.
					findViewById(R.id.btnSave);
			
			viewHolder.btnSave.setFocusable(false);
			viewHolder.btnSave.setFocusableInTouchMode(false);	
			
			viewHolder.btnSave.setOnClickListener(new OnClickListener(){
				public void onClick(View view){
					Toast.makeText(context, "你要收藏"+animal.getName()+"吗", 
							Toast.LENGTH_SHORT).show();
				}
			});			
			view.setTag(viewHolder);//将ViewHolder存储在View中
			
		}else{
			view=convertView;
			viewHolder=(ViewHolder)view.getTag();//重新获取ViewHolder
		}
		viewHolder.tvName.setText(animal.getName());		
		return view;
	}
	class ViewHolder{
		TextView tvName;
		ImageButton btnSave;
	}

}
</span>


  2.(1)这一节我们将实现点击每条成语以对话框的形式显示该成语的详细信息。

在layout下新建布局文件dialog_info.xml。可以看出,最外层是ScrollView组件,当内容较多时会自动出现垂直滚动条。

<span style="font-family:KaiTi_GB2312;font-size:18px;"><ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@drawable/bg_ling"
        android:orientation="vertical" >

        <TextView
            android:id="@+id/tvIdiomInfo"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="Medium Text"
            android:textAppearance="?android:attr/textAppearanceMedium" />
    </LinearLayout>

</ScrollView></span>

  (2)接下来,修改StudyAnimalActivity,增加点击事件处理。这里的DialogUtil.showDialog()方法是自定义的方法。

<span style="font-family:KaiTi_GB2312;font-size:18px;">lvAnimalList.setOnItemClickListener(new OnItemClickListener(){		
			public void onItemClick(AdapterView<?>adapterView,View view,
					int position,long id) {
				// TODO Auto-generated method stub
				Animal  animal=animalList.get(position);
				String result =animal.getName()+
						"\n[发音]"+animal.getPronounce()+
						"\n[解释]:"+animal.getExplain()+
						"\n[近义词]"+animal.getHomoionym()+
						"\n[反义词]"+animal.getAnytonym()+
						"\n[来源]"+animal.getDerivation()+
						"\n[示例]"+animal.getExamples();
						DialogUtil.showDialog(result,StudyAnimalActivity.this);
			}
		});</span>

  (3)在util包下新建DialogUtil类。

<span style="font-family:KaiTi_GB2312;font-size:18px;">public class DialogUtil {
	public static void showDialog(String result,Context context){
		AlertDialog.Builder builder=new AlertDialog.Builder(context);
		LayoutInflater layoutInflater=LayoutInflater.from(context);
		View view=layoutInflater.inflate(R.layout.dialog_info, null);
		builder.setView(view);
		TextView tvIdiomInfo=(TextView) view.findViewById(R.id.tvIdiomInfo);	
		tvIdiomInfo.setText(result);
		builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {			
			
			public void onClick(DialogInterface dialog, int which) {
				// TODO Auto-generated method stub
				dialog.dismiss();
			}
		});
		builder.create().show();
	}
	

}</span>

   可是运行时点击每个成语并不弹出对话框,通过google搜索发现是因为在列表中如果出现类似按钮这种能够获取焦点的组件时,就会出现无法单击每一列表项的情况。

解决的办法是,修改AnimalAdapter类。

<span style="font-family:KaiTi_GB2312;font-size:18px;">                   viewHolder.btnSave.setFocusable(false);
			viewHolder.btnSave.setFocusableInTouchMode(false);				
			viewHolder.btnSave.setOnClickListener(new OnClickListener(){</span>






  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
基于微信小程序的家政服务预约系统采用PHP语言和微信小程序技术,数据库采用Mysql,运行软件为微信开发者工具。本系统实现了管理员和客户、员工三个角色的功能。管理员的功能为客户管理、员工管理、家政服务管理、服务预约管理、员工风采管理、客户需求管理、接单管理等。客户的功能为查看家政服务进行预约和发布自己的需求以及管理预约信息和接单信息等。员工可以查看预约信息和进行接单。本系统实现了网上预约家政服务的流程化管理,可以帮助工作人员的管理工作和帮助客户查询家政服务的相关信息,改变了客户找家政服务的方式,提高了预约家政服务的效率。 本系统是针对网上预约家政服务开发的工作管理系统,包括到所有的工作内容。可以使网上预约家政服务的工作合理化和流程化。本系统包括手机端设计和电脑端设计,有界面和数据库。本系统的使用角色分为管理员和客户、员工三个身份。管理员可以管理系统里的所有信息。员工可以发布服务信息和查询客户的需求进行接单。客户可以发布需求和预约家政服务以及管理预约信息、接单信息。 本功能可以实现家政服务信息的查询和删除,管理员添加家政服务信息功能填写正确的信息就可以实现家政服务信息的添加,点击家政服务信息管理功能可以看到基于微信小程序的家政服务预约系统里所有家政服务的信息,在添加家政服务信息的界面里需要填写标题信息,当信息填写不正确就会造成家政服务信息添加失败。员工风采信息可以使客户更好的了解员工。员工风采信息管理的流程为,管理员点击员工风采信息管理功能,查看员工风采信息,点击员工风采信息添加功能,输入员工风采信息然后点击提交按钮就可以完成员工风采信息的添加。客户需求信息关系着客户的家政服务预约,管理员可以查询和修改客户需求信息,还可以查看客户需求的添加时间。接单信息属于本系统里的核心数据,管理员可以对接单的信息进行查询。本功能设计的目的可以使家政服务进行及时的安排。管理员可以查询员工信息,可以进行修改删除。 客户可以查看自己的预约和修改自己的资料并发布需求以及管理接单信息等。 在首页里可以看到管理员添加和管理的信息,客户可以在首页里进行家政服务的预约和公司介绍信息的了解。 员工可以查询客户需求进行接单以及管理家政服务信息和留言信息、收藏信息等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值