`

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开发实例大全_王东华

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

    Google.Android开发入门与实战

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

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

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

    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 ...

    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 入伙过程...

    仿应用市场的Demo

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

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

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

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

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

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

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

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

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

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

    总的来说,"AppSort"项目涵盖了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应用开发和电商系统实现具有很高的参考价值。通过深入研究源码,...

    android性格测试(源码和截图)

    总的来说,虽然这个“android性格测试”应用看似简单,但它综合运用了Android开发的多个方面,包括用户界面设计、数据管理、逻辑处理、测试和发布等,为开发者提供了学习和实践Android技术的机会。

Global site tag (gtag.js) - Google Analytics