`

android开发综合应用之打分应用

 
阅读更多

该程序是一个listView跟ratingbar综合的应用示例。先上代码如下:

main.java

  

import java.util.ArrayList;
import java.util.List;

import android.app.AlertDialog;
import android.app.ListActivity;
import android.content.Context;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.RatingBar;
import android.widget.SimpleAdapter;
import android.widget.TextView;
import android.widget.AdapterView.OnItemSelectedListener;

public class Main extends ListActivity
{	
	private static String[] applicationNames = new String[]
	{ "多功能日历", "eoeMarket客户端", "耐玩的重力消砖块", "白社会", "电池管家" };
	private static String[] authors = new String[]
	{ "张三", "eoemobile", "小费", "ApkHome", "lucyfa" };
	private static int[] resIds = new int[]
	{ R.drawable.calendar, R.drawable.eoemarket, R.drawable.brick,
			R.drawable.whitesociety, R.drawable.terminater };
	private static float[] applicationRating = new float[]
	{ (float) 5.0, (float) 5.0, (float) 3.5, (float) 5.0, (float) 4.0 };
	String inflater = Context.LAYOUT_INFLATER_SERVICE;
	LayoutInflater layoutInflater;
	private RatingAdapter raAdapter;
	/**
	 * 自定义适配器,
	 * 因为simpleAdapter只支持textView,imagesView,或是想Checkable接口的类,所以这里不能使用;
	 * @author lyj
	 *
	 */
	private class RatingAdapter extends BaseAdapter
	{
		private Context context;

		public RatingAdapter(Context context)
		{
			this.context = context;
			//获取扩展对象,用于操作布局文件
			layoutInflater = (LayoutInflater) context
					.getSystemService(inflater);
		}

		@Override
		public int getCount()
		{
			return applicationNames.length;
		}

		@Override
		public Object getItem(int position)
		{
			return applicationNames[position];
		}

		@Override
		public long getItemId(int position)
		{
			return position;
		}

		public void setRating(int position, float rating)
		{
			applicationRating[position] = rating;
			//更新数据
			notifyDataSetChanged();
		}
		/**
		 * 设置列表项值,返回定义视图
		 */
		@Override
		public View getView(int position, View convertView, ViewGroup parent)
		{
			//获取布局对象,进行布局文件里的组件操作
			LinearLayout linearLayout = (LinearLayout) layoutInflater.inflate(
					R.layout.main, null);
			ImageView ivLogo = (ImageView) linearLayout
					.findViewById(R.id.ivLogo);
			TextView tvApplicationName = ((TextView) linearLayout
					.findViewById(R.id.tvApplicationName));
			TextView tvAuthor = (TextView) linearLayout
					.findViewById(R.id.tvAuthor);
			TextView tvRating = (TextView) linearLayout
					.findViewById(R.id.tvRating);
			RatingBar ratingBar = (RatingBar) linearLayout
					.findViewById(R.id.ratingbar);
			ivLogo.setImageResource(resIds[position]);
			tvApplicationName.setText(applicationNames[position]);
			tvAuthor.setText(authors[position]);
			tvRating.setText(String.valueOf(applicationRating[position]));
			ratingBar.setRating(applicationRating[position]);
			return linearLayout;
		}
	}

	@Override
	protected void onListItemClick(ListView l, View view, final int position,
			long id)
	{
		View myView = getLayoutInflater().inflate(R.layout.rating, null);
		final RatingBar ratingBar = (RatingBar) myView
				.findViewById(R.id.ratingbar);
		ratingBar.setRating(applicationRating[position]);
		new AlertDialog.Builder(this).setTitle(applicationNames[position])
				.setMessage("给应用程序打分").setIcon(resIds[position])
				.setView(myView).setPositiveButton("确定", new OnClickListener()
				{

					@Override
					public void onClick(DialogInterface dialog, int which)
					{
						raAdapter.setRating(position, ratingBar.getRating());
						
					}
				}).setNegativeButton("取消", null).show();
	}

	@Override
	public void onCreate(Bundle savedInstanceState)
	{
		super.onCreate(savedInstanceState);

		List<View> viewList = new ArrayList<View>();
		viewList.add(getLayoutInflater().inflate(R.layout.main, null));
		raAdapter = new RatingAdapter(this);
		setListAdapter(raAdapter);
		

	}
}

 程序中使用到了自定义的适配器,不熟悉adapter的朋友可以先去查阅下资料。

 

布局文件:

main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
	android:orientation="horizontal" android:layout_width="fill_parent"
	android:layout_height="wrap_content" android:gravity="center_vertical">
	<ImageView android:id="@+id/ivLogo" android:layout_width="60dp"
		android:layout_height="60dp" android:src="@drawable/icon"
		android:paddingLeft="5dp" />
	<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
		android:orientation="vertical" android:layout_width="wrap_content"
		android:layout_height="wrap_content" android:gravity="right"
		android:padding="10dp">
		<TextView android:id="@+id/tvApplicationName"
			android:layout_width="wrap_content" android:layout_height="wrap_content"
			android:textSize="16dp" />
		<TextView android:id="@+id/tvAuthor" android:layout_width="wrap_content"
			android:layout_height="wrap_content" android:layout_below="@id/tvApplicationName"
			android:textSize="14dp" />
	</RelativeLayout>
	<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
		android:orientation="vertical" android:layout_width="fill_parent"
		android:layout_height="wrap_content" android:gravity="right"
		android:padding="10dp">
		<TextView android:id="@+id/tvRating" android:layout_width="wrap_content"
			android:layout_height="wrap_content" android:text="5.0" />
		<RatingBar android:id="@+id/ratingbar" android:layout_width="wrap_content"
			android:layout_height="wrap_content" android:numStars="5"
			style="?android:attr/ratingBarStyleSmall" android:layout_below="@id/tvRating" />
	</RelativeLayout>
</LinearLayout>

 

弹出对话框的布局文件:

rating.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
	android:orientation="horizontal" android:layout_width="fill_parent"
	android:layout_height="wrap_content" android:gravity="center_vertical">
	<RatingBar android:id="@+id/ratingbar" android:layout_width="wrap_content"
		android:layout_height="wrap_content" android:numStars="5"/>
</LinearLayout>

 运行结果:

 

  • 大小: 41.9 KB
  • 大小: 46 KB
分享到:
评论

相关推荐

    Android应用开发综合设计验收评分细则1

    5. **Android应用开发综合设计报告**(共80%):报告应详尽展示项目的需求分析、模块划分、业务流程和格式规范。对项目需求的全面解读,以及模块划分的合理性,能够体现项目规划的深度。业务流程的描述应清晰,便于...

    Android入门到精通源代码.

    第2章 搭建Android开发环境 2.1 Android开发环境要求 2.2 JDK的安装和配置 2.2.1 安装JDK 2.2.2 配置JDK 2.3 Android SDK的下载和安装 2.3.1 下载Android SDK 2.3.2 安装Android SDK 2.3.3 创建Android虚拟设备 2.4 ...

    android开发实例大全_王东华

    本书以Android应用程序的开发为主题,并结合真实的案例向读者详细介绍了Android的基本组件的使用及应用程序开发的整个流程。本书的讲述由浅入深,实例全面并典型,几乎囊括了所有和Android应用相关的项目。全书分为...

    Google.Android开发入门与实战

    内容简介  《Android开发入门与实战》内容上涵盖了用Android开发的大部分场景,从Android基础介绍、... 最后,祝广大开发者的技术日益精进,早日开始Android开发之旅,赶上移动互联网的第一班车,共赢中国3G未来!

    仿应用市场的Demo

    总的来说,这个“仿应用市场的Demo”是一个综合性的Android开发项目,涵盖了从基础的UI设计到复杂的网络通信和数据存储等多方面的技能,对于提升开发者全面的Android开发能力具有极大的帮助。通过完成这样一个项目,...

    Android应用开发团体赛决赛说明

    - **主题与规模**:“Android应用开发团体赛”旨在促进Android平台上的应用程序创新与团队协作能力,共有80支队伍参与最终角逐,展现出Android开发领域的活力与竞争。 #### 二、决赛时间安排 - **日期与时段**:...

    Google Android开发入门与实战的代码

    4.3 Android开发活动及特色应用 37 4.3.1 开发应用的领域 37 4.3.2 Android Market特色应用一览 38 4.4 你也可以做东家——申请Market账号 43 4.4.1 卖东西要先入伙——准备工作 43 4.4.2 入伙过程...

    安卓手机移动开发android studio 课程设计 星座APP

    缘:这个界面主要是进行星座配对分析,男生女生可以选择星座然后来进行配对分析,配对详情包含:配对评分、星座比重、解析、注意事项等。 运势:这个界面蕴含了十二个星座的图片,点开每个图片,会对这个星座的今年...

    2018年全国职业院校技能大赛高职组河南选拔赛“移动互联网应用软件开发”赛项规程.pdf

    考核的技术点涵盖了Android开发中的关键组件,如UI、Activity、Service、BroadcastReceiver和ContentProvider,以及资源管理、网络编程、多线程处理、多媒体应用、数据存储和业务逻辑等。 比赛以团队形式进行,每队...

    基于Android客户端的应用市场设计与实现论文.doc

    设计和实现一个基于Android客户端的应用市场,需要综合考虑用户体验、功能完善性、安全性以及性能优化等多个方面。通过不断迭代和优化,一个成功的应用市场不仅能满足用户下载需求,还能促进开发者与用户之间的互动...

    Android系统热门应用推荐器 毕业设计工程源码

    总的来说,“Android系统热门应用推荐器”是一项集网络爬虫、数据解析、界面设计、用户交互于一体的综合实践项目。它不仅锻炼了开发者对Android系统的理解,还涵盖了网络编程、UI设计、数据处理等多个领域,为开发者...

    Android代码-爬取安卓应用分类

    总的来说,"AppSort"项目涵盖了Android开发的多个核心知识点,包括网络爬虫技术、数据解析、数据库管理、多线程与异步处理、数据结构与算法,以及异常处理和安全性。通过这个项目,开发者可以提升自己的综合技能,...

    2017年全国职业院校技能大赛高职组移动互联网应用软件开发赛项规程.pdf

    它不仅涵盖了移动应用开发中常见的技术要点,如UI设计、Android四大组件、网络编程、多线程处理、多媒体应用、手势识别、数据存储和业务逻辑等,而且通过实际比赛的组织形式,让学生有机会将理论知识与实际操作紧密...

    2018高职组《移动互联网应用软件开发》题库.rar

    2018年全国职业院校技能大赛移动互联网应用软件开发赛项竞赛试题(B卷)评分点 V1.xlsx则可能是比赛的评分标准和细则,列出了各个部分的得分点,如需求分析的完整性、代码质量、用户体验设计、程序运行效率等。...

    Android应用源码之中国象棋人机对战项目.zip

    本项目“Android应用源码之中国象棋人机对战”是一个典型的Android应用程序,它展示了如何在Android平台上实现一个功能完备的中国象棋游戏,并且支持人机对战模式。通过分析这个项目的源码,我们可以深入理解Android...

    基于Android的大学生综合素质测评APP的设计与实现.pdf

    【Android应用开发】 本文主要介绍了基于Android平台设计与实现的一款大学生综合素质测评APP。该应用旨在为高校提供一种高效、公正的大学生综合素质评价方法,以适应高等教育扩招带来的数据管理和处理需求的增长,...

    安卓平台应用开发-应用市场和商品展示

    总的来说,安卓平台应用开发中的应用市场和商品展示是一个综合性的过程,涵盖了开发、设计、营销和数据分析等多个方面。通过"chapter05"的学习,开发者不仅可以掌握基本的技术知识,还能了解到如何有效地将应用推向...

    3-开发考试系统.zip

    综合以上信息,我们可以了解到,这个项目涵盖了Android应用开发的基本流程,包括使用Android Studio的环境设置、Gradle构建系统的运用、模块化开发的理解以及实际的代码编写。开发者可能需要具备Android UI设计(如...

    基于Android的宠物商城系统.zip

    总的来说,"基于Android的宠物商城系统"是一个综合性的Android开发项目,涵盖了从用户界面设计、数据处理到网络通信等多个方面,对于学习Android应用开发和电商系统实现具有很高的参考价值。通过深入研究源码,...

Global site tag (gtag.js) - Google Analytics