当前位置:首页 > 基于Android的新闻客户端 - 毕业设计说明书
2016届毕业设计说明书
图3.2 显示新闻详细信息时序图
上面切换新闻上一条和下一条的两个按钮,在NewsDetailsActivity中通过id获取并设置OnClickListener点击响应事件,通过ViewFlipper的showPrevious()和showNext()方法来切换新闻的上一条和下一条。显示新闻分类的TextView,通过setText()来设置它的文本信息,其中信息通过新建Intent和Bundle对象,然后通过 bundle.getString()方法来获取前面传过来的新闻分类,并显示在TextView中。接着是显示新闻跟帖数的按钮在NewsDetailsActivity中通过id获取,并通过setText()方法来设置跟帖数,在setOnClickListener()方法中通过Intent来跳转到显示新闻评论信息的界面comments.xml。中间部分的ViewFlipper通过addView()方法将用来显示新闻详细信息的news_body.xml显示在ViewFlipper中,其中news_body.xml中最外层是一个ScrollView用来实现新闻信息的上下滑动,接下来是TextView用来显示新闻的标题,内容和来源。通过实现OnTouchListener接口来实现新闻的左右滑动,通过event.getX()来获取当前X值,通过按下时的X值和离开时的X值来判断是向左还是向右滑动,从而判断显示新闻的上一条还是下一条。接着是最下面的新闻跟帖部分,点击前的LinearLayout中包含一个ImageButton和一个ImageView用来显示评论,跟帖部分还有一个ImageButton用来实现新闻的收藏,点击后的
第 16 页 共 35 页
2016届毕业设计说明书
LinearLayout中包含EditText用于用户的信息的输入。通过定义InputMethodManager对象 并通过调用toggleSoftInput()方法来实现虚拟键盘的显示。 3.3 新闻跟帖显示模块
最上面是一个RelativeLayout,里面是一个TextView用来显示跟帖,还有一个Button按钮用于返回到新闻详细界面。中由一个ListView实现新闻评论信息的显示。
最上面的TextView通过android:text显示跟帖,Button按钮通setOnClickListener方法,并重写onClick()方法,在方法中finish()方法关闭当前Activity,返回到新闻详细界面。中间的ListView使用适配器模式,创建SimpleAdapter对象,并通过setAdapter()方法添加到ListView上。 3.4 后台管理功能模块的详细设计 3.4.1 用户登录模块
将用户信息封装到一个model文件夹下的user类,里面有用户名,密码等属性,用户进入登录界面login.jsp,通过输入用户名和密码,然后点击登录按钮,提交给loginservlet,然后通过request.getParameter()方法获取用户名和密码,通过调用userdao类下的userLogin()方法,然后在该方法中连接数据库,与数据库中的用户名匹配,如果匹配成功,则跳转到显示新闻信息的主界面。 3.4.2 新闻管理模块
将新闻信息封装到model文件夹下的new类,在项目主界面main.jsp中可以对新闻进行增删改查,四个方法都封装到newsDAO类中。当管理员查看新闻是,通过调用getSpecifyCategoryNews()方法,将从数据库获取的新闻信息保存到list中,然后遍历list对象,逐个把新闻信息显示到显示新闻信息default.jsp中的表格中。当用户删除新闻时,传过要删除的新闻编号nid,通过调用delete()方法,传入参数nid,操作数据库删除对应新闻,然后刷新页面。当管理员增加新闻按钮时,跳到添加新闻的界面add.jsp,输入需要的信息,点击添加按钮,提交给addServlet进行处理,调用newsDAO类中add()方法,操作数据库。管理员可以修改相应的新闻,进
第 17 页 共 35 页
2016届毕业设计说明书
入显示新闻详细界面newsshow.jsp,将需要修改的内容填好,点击修改按钮,提交给updateServlet处理,并完成对数据库的修改。 3.4.3 评论信息管理
由于评论是用户的想法,后台管理知对其进行查看和删除,本模块同样使用MVC模式,model中封装新闻评论,对新闻的操作封装到dao包中,jsp页面提交的信息由servlet处理,处理后跳转到相应的界面。 3.5 新闻客户端所用技术 3.5.1 JSON数据传输格式
JSON在本项目中用于与服务器进行数据之间传输的一种文本格式,由于它跨平台的特点,以及它的数据简单,通过名称与值来表示,其解析简单并且保存的数据类型广泛,可以是字符串,数值,对象等,同时是一种轻量级数据交换格式,因此多数数据传输都用JSON格式。
它以名称与值的结构表示,中间使用冒号分开,即key:value,key值用一个字符串,而value则可以是不同类型,例如:字符串,对象,布尔值等。其中的对象以{}来括起,每一个键值之间用逗号隔开。以下为获取新闻信息后的JSON数据格式:
3.5.2 异步加载新闻信息
第 18 页 共 35 页
2016届毕业设计说明书
通过异步加载数据可以使用户在加载更多新闻的同时阅读别的新闻,无需等待新闻的加载,给用户更好的体验,本项目中异步跟新通过继承AsyncTask,通过重写onPreExecute(),doInBackground(),onPostExecute()这三个方法。其中onPreExecute()方法中做一些准备事情,在异步加载真正执行前做一些工作,本项目主要执行隐藏刷新按钮,显示进度条,设置加载更多的文本信息。在doInBackground()中实现真正执行获取新闻信息的代码来获取新闻信息,本项目主要调用getSpeCateNews()方法来获取新闻信息。onPostExecute()中是完成doInBackground()后执行的,本项目主要根据是否加载成功显示相关的提示,显示刷新按钮,隐藏进度条,设置文本信息。
3.5.3 数据交互方式
用户登录,显示新闻信息,查看评论等都要与服务器进行数据的交互,本项目中通过get与post两种方式进行交互。get主要用于从数据库获取数据,返回对应的数据,post主要是进行用户登录的验证以及收藏新闻,返回相应的操作是否成功,只是简单的返回一种状态标识,本项目中主要用get方式。
get交互方式,通过传入url与对应的参数,创建HttpGet对象和httpClient对象,然后通过httpClient.execute()方法获取数据,定义HttpResponse对象用于保存结果。通过httpResponse.getEntity()来获取返回数据,并用 EntityUtils.toString()方法将获取的数据转换成字符串返回。Post交互方式,与get交互方式类似,对应创建httpPost对象。以下为get交互方式的主要实现代码:
第 19 页 共 35 页
共分享92篇相关文档