Android Touch开发搜索应用
创始人
2024-07-30 20:41:48
0

一 设计相关界面

我们的界面很简单,只是一个文本输入框,一个“Search”的检索按钮,以及展示检索结果的内容区域。下面是相关代码:

java代码:

  1. Ext.setup({   
  2. onReady: function() {   
  3. var topToolbar = new Ext.Toolbar({   
  4. dock : 'top',   
  5. ui: 'dark',   
  6. title: 'Sencha Twitter Search'   
  7. });   
  8. var tpl = new Ext.XTemplate(   
  9. '',   
  10. '',   
  11. '',   
  12. '',   
  13. '',   
  14. '
',   
  • '',   
  • '{from_user} ',   
  • '{text}',   
  • '
  • ',   
  • '
  • ',   
  • '
  • ',   
  • '',   
  • '
  • '   
  • );   
  • var resultPanel = new Ext.Panel({   
  • layout: 'fit',   
  • style: 'padding-bottom: 10px;',   
  • tpl: tpl   
  • });   
  • var searchPanel = new Ext.Panel({   
  • padding: 10,   
  • layout: {   
  • type: 'hbox',   
  • align: 'stretch'   
  • },   
  • items: [{   
  • flex: 4,   
  • xtype: 'textfield',   
  • style: 'margin-right: 10px;',   
  • id: 'textquery'   
  • },{   
  • flex: 2,   
  • xtype: 'button',   
  • text: 'Search',   
  • handler: function() {   
  • var query = Ext.getCmp("textquery").getValue();   
  • Ext.Ajax.request({   
  • url: 'index.php?act=search&q='+query,   
  • success: function(e) {   
  • var obj = Ext.util.JSON.decode(e.responseText);   
  • var msg = obj.results;   
  • var html = tpl.apply(msg);   
  • resultPanel.update(html);   
  • }   
  • });   
  • }   
  • }]   
  • });   
  • var myPanel = new Ext.Panel({   
  • dockedItems: [topToolbar],   
  • items: [searchPanel, resultPanel],   
  • scroll: 'vertical',   
  • style: 'background: #DDEEF6;',   
  • fullscreen : true   
  • });   
  • }   
  • });  
  •  在这里,首先设置了topToolbar标题栏,标题栏的内容为Sencha Twitter Search。接着使用EXT的Ext.XTemplate设计了一个模版,模版中的内容是按照twitter中的格式设计的,即发微博人的相片、用户名以及所发的言论。而resultPanel中是显示结果的面板,searchPanel则是输入检索条件的面板,其中请注意handler方法,使用query变量获得了用户的输入检索词,之后使用get的方法,使用ajax的方式发送到index.php去处理(本例子中把EXTJS代码和PHP代码写在同一个PHP文件中了,当然也可以分开来编写,那么的话就使用POST方法了),同时,在success的回调函数中,对AJAX调用返回的结果进行处理,

    其中,使用var obj = Ext.util.JSON.decode(e.responseText),对检索的结果JSON格式进行解码,将返回的JSON格式字符串转变为JSON格式的对象,并且用tpl.apply(msg),将解析后的结果应用到之前的模版tpl中,***要记得使用resultPanel.update(html);更新一下该区域。

    二  PHP获得twitter内容的代码

    在同一个index.php文件中,通过使用get的方法,发送查询请求关键字到twitter公开的API进行查询,代码如下:

    java代码:

    1. if (isset($_GET["act"]) && $_GET["act"] == "search") {   
    2. $url = 'http://search.twitter.com/search.json?q='.$_GET["q"];   
    3. $content = file_get_contents($url);   
    4. $array = json_decode($content);   
    5. $data = array();   
    6. foreach ($array->results as $var => $value) {   
    7. $pattern = '/\b(https?:\/\/[-A-Z0-9+&@#\/%?=~_|$!:,.;]*[A-Z0-9+&@#\/%=~_|$])/i';   
    8. preg_match_all($pattern, $value->text, $regs);   
    9. $loop = count($regs[0]);   
    10. for ($i = 0; $i < $loop; $i++) {   
    11. $value->text = str_replace($regs[0][$i], ''.$regs[0][$i].'', $value->text);   
    12. }   
    13. $data[] = array(   
    14. "profile_image_url" => $value->profile_image_url,   
    15. "from_user" => $value->from_user,   
    16. "text" => $value->text   
    17. );   
    18. }   
    19. $out = array(   
    20. "success" => true,   
    21. "results" => $data   
    22. );   
    23. echo json_encode($out);   
    24. exit;   
    25. }  

    【编辑推荐】

    Android环境变量的设置

    Android系统重要文件类型详解

    Android开发之旅:Android架构

    Android应用程序开发环境的搭建

    相关内容

    热门资讯

    如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
    如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
    施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
    Windows恶意软件20年“... 在Windows的早期年代,病毒游走于系统之间,偶尔删除文件(但被删除的文件几乎都是可恢复的),并弹...
    20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
    德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
    着眼MAC地址,解救无法享受D... 在安装了DHCP服务器的局域网环境中,每一台工作站在上网之前,都要先从DHCP服务器那里享受到地址动...
    为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...