茄子在线看片免费人成视频,午夜福利精品a在线观看,国产高清自产拍在线观看,久久综合久久狠狠综合

    <s id="ddbnn"></s>
  • <sub id="ddbnn"><ol id="ddbnn"></ol></sub>

  • <legend id="ddbnn"></legend><s id="ddbnn"></s>

    基于PHP后臺的Android新聞瀏覽客戶端
    來源:易賢網(wǎng) 閱讀:1323 次 日期:2016-08-19 14:43:41
    溫馨提示:易賢網(wǎng)小編為您整理了“基于PHP后臺的Android新聞瀏覽客戶端”,方便廣大網(wǎng)友查閱!

    本文實(shí)例為大家分享了Android新聞瀏覽客戶端,基于php后臺,供大家參考,具體內(nèi)容如下

    1、使用HBuilder進(jìn)行PHP環(huán)境配置,測試是否可以查詢MySQL語句,之前都已經(jīng)詳細(xì)說明過了。

    2、此處php后臺實(shí)現(xiàn)mysql的查詢功能,并以JSON數(shù)據(jù)格式返回個(gè)客戶端

    在PHP此處建立一個(gè)mysql_connect.php文件,實(shí)現(xiàn)數(shù)據(jù)庫的連接,并設(shè)置字符集格式。

    <?php

    $con = mysql_connect("localhost","root","123456");

    //設(shè)置字符集為UTF-8 可解決中文亂碼

    mysql_query("SET NAMES 'utf8'");

    mysql_query("SET CHARACTER SET utf8");

    mysql_query("SET CHARACTER_SET_RESULT=utf8");

    if(!$con){

    die(mysql_error());

    }

    mysql_select_db("newsdemo",$con);

    ?>

    然后新建一個(gè)getNewsJSON.php文件用于進(jìn)行將查詢結(jié)果轉(zhuǎn)換成JSON字符串格式。只需要 json_encode這個(gè)方法即可。

    <?php

    /*獲得JSON數(shù)據(jù)

     * 返回值:title desc time content_url pic_url*/

     require 'mysql_connect.php';

    $n = 0;

    $result = mysql_query("select * from news");

    while($row = mysql_fetch_array($result)){

    $arr[$n++] = array(

    "title"=>$row['title'],

    "desc"=>$row['desc'],

    "time"=>$row['time'],

    "content_url"=>$row['content_url'],

    "pic_url"=>$row['pic_url']

    );

    }

    //數(shù)組轉(zhuǎn)化為JSON字符串

    echo json_encode($arr);

    ?>

    重點(diǎn)在于Android端的設(shè)計(jì)開發(fā)

    1、設(shè)計(jì)界面

    由于需要以在ListView的每個(gè)Item中設(shè)置相同的格式,所以此處運(yùn)用ListView+Adapter的形式

    在主界面LinearLayout中添加一個(gè)ListView控件

    2、Mainactivity程序如下:

    public class MainActivity extends Activity implements OnItemClickListener{

      private ListView lvNews ;

      private NewsAdapter adapter ;

      //定義集合

      private List<News> newsList ;

      //獲取json字符串的URL地址

      public static final String GET_NEWS_URL = "http://211.87.234.20/NewsDemo/getNewsJSON.php";

      //獲取msg之后如何處理

      private Handler getNewsHandler = new Handler(){

      public void handleMessage(android.os.Message msg){

      String jsonData = (String) msg.obj ;

      System.out.println(jsonData) ;

      try {

    JSONArray jsonArray = new JSONArray(jsonData) ;

    for(int i=0;i<jsonArray.length();i++){

    JSONObject object = jsonArray.getJSONObject(i) ;

    String title = object.getString("title") ;

    String desc = object.getString("desc") ;

    String time = object.getString("time") ;

    String content_url = object.getString("content_url") ;

    String pic_url = object.getString("pic_url") ;

    System.out.println("title="+title) ;

    //add一個(gè)News類型的Object

    newsList.add(new News(title,desc,time,content_url,pic_url)) ;

    }

    //通知更新

    adapter.notifyDataSetChanged() ;

    } catch (JSONException e) {

    // TODO Auto-generated catch block

    e.printStackTrace();

    }

      } ;

      } ;

      @Override

      protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState) ;

        setContentView(R.layout.activity_main) ;

        lvNews = (ListView) findViewById(R.id.lvNews) ;

        //初始化

        newsList = new ArrayList<News>();  

        adapter = new NewsAdapter(this,newsList) ;

        lvNews.setAdapter(adapter) ;

        lvNews.setOnItemClickListener(this) ;

        HttpUtils.getNewsJSON(GET_NEWS_URL,getNewsHandler) ;

      }

      @Override

      public boolean onCreateOptionsMenu(Menu menu) {

        // Inflate the menu; this adds items to the action bar if it is present.

        getMenuInflater().inflate(R.menu.main, menu);

        return true;

      }

    @Override

    public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) {

    // TODO Auto-generated method stub

    News news = newsList.get(position) ;

    Intent intent = new Intent(this,BrowseNewsActivity.class) ;

    intent.putExtra("content_url",news.getContent_url()) ;

    startActivity(intent) ;

    }

    }

    此處需要一個(gè)工具類HttpUtils以及自定義的NewsAdapter以實(shí)現(xiàn)item的視圖顯示.

    HttpUtils代碼如下:

    package com.MR.news.utils;

    import java.io.BufferedReader;

    import java.io.InputStream;

    import java.io.InputStreamReader;

    import java.net.HttpURLConnection;

    import java.net.URL;

    import android.graphics.Bitmap;

    import android.graphics.BitmapFactory;

    import android.os.Handler;

    import android.os.Message;

    import android.widget.ImageView;

    public class HttpUtils {

    //工具類直接定義成靜態(tài)方法即可

    /*url用于內(nèi)部類中,所以要將其設(shè)定為final類型*/

    /*讀取完成需要通知主線程,需要使用handler*/

    public static void getNewsJSON(final String url,final Handler handler){

    //訪問網(wǎng)絡(luò),時(shí)間長,開啟新線程

    new Thread(new Runnable(){

    @Override

    public void run() {

    // TODO Auto-generated method stub

    HttpURLConnection conn ;

    InputStream is ;

    try {

    conn = (HttpURLConnection) new URL(url).openConnection() ;

    //GET方式獲取

    conn.setRequestMethod("GET") ;

    //得到輸入流

    is=conn.getInputStream() ;

    //讀取數(shù)據(jù)用緩沖,里面要傳入一個(gè)reader

    BufferedReader reader = new BufferedReader(new InputStreamReader(is));

    //一行一行讀取數(shù)據(jù)

    String line = "";

    //沒讀完一行進(jìn)行拼接,高效

    StringBuilder result = new StringBuilder();

    while((line = reader.readLine()) != null){

    result.append(line);

    }

    Message msg = new Message() ;

    //msg.obj可以放進(jìn)去任何對象

    msg.obj = result.toString() ;

    handler.sendMessage(msg) ;

    } catch (Exception e) {

    e.printStackTrace();

    }

    }}).start() ;

    }

    public static void setPicBitMap(final ImageView ivPic,final String pic_url){

    new Thread(new Runnable(){

    @Override

    public void run() {

    // TODO Auto-generated method stub

    try {

    HttpURLConnection conn = (HttpURLConnection) new URL(pic_url).openConnection() ;

    conn.connect() ;

    InputStream is = conn.getInputStream() ;

    //bitmap就是所需圖片資源

    /*從資源文件中的到圖片*/

    Bitmap bitmap = BitmapFactory.decodeStream(is) ;

    ivPic.setImageBitmap(bitmap) ;

    is.close() ;

    } catch (Exception e) {

    // TODO Auto-generated catch block

    e.printStackTrace();

    }

    }).start() ;

    }

    }

    NewsAdapter代碼如下:

    package com.MR.news.adapter;

    import java.util.List;

    import com.MR.news.R;

    import com.MR.news.model.News;

    import com.MR.news.utils.HttpUtils;

    import android.content.Context;

    import android.view.LayoutInflater;

    import android.view.View;

    import android.view.ViewGroup;

    import android.widget.BaseAdapter;

    import android.widget.ImageView;

    import android.widget.TextView;

    public class NewsAdapter extends BaseAdapter {

    //聲明上下文對象,后面的getView方法需要

    private Context context;

    private List<News> newsList;

    public NewsAdapter(Context context, List<News> newsList){

    this.context = context ;

    this.newsList = newsList ;

    }

    @Override

    public int getCount() {

    // TODO Auto-generated method stub

    return newsList.size();

    }

    @Override

    public Object getItem(int position) {

    // TODO Auto-generated method stub

    return newsList.get(position);

    }

    @Override

    public long getItemId(int position) {

    // TODO Auto-generated method stub

    return position;

    }

    @Override

    public View getView(int position, View convertView, ViewGroup arg2) {

    // TODO Auto-generated method stub

    if(convertView == null){

    convertView = LayoutInflater.from(context).inflate(R.layout.news_item,null) ;

    }

    TextView tvTitle = (TextView) convertView.findViewById(R.id.tvTitle) ;

    TextView tvDesc = (TextView) convertView.findViewById(R.id.tvDesc) ;

    TextView tvTime = (TextView) convertView.findViewById(R.id.tvTime) ;

    ImageView ivPic = (ImageView) convertView.findViewById(R.id.ivPic);

    News news = newsList.get(position) ;

    tvTitle.setText(news.getTitle()) ;

    tvDesc.setText(news.getDesc()) ;

    tvTime.setText(news.getTime()) ;

    String pic_url = news.getPic_url() ;

    HttpUtils.setPicBitMap(ivPic, pic_url) ;

    return convertView;

    }

    }

    news_item用來設(shè)置每個(gè)item的顯示格式

    <?xml version="1.0" encoding="utf-8"?>

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

      android:layout_width="match_parent"

      android:layout_height="match_parent" >

      <ImageView

        android:id="@+id/ivPic"

        android:layout_width="42dp"

        android:layout_height="42dp"

        android:src="@drawable/ic_launcher"

        />

      <TextView

        android:id="@+id/tvTitle"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:layout_alignParentTop="true"

        android:layout_toRightOf="@+id/ivPic"

        android:text="title"

        android:textSize="18sp" />

      <TextView

        android:id="@+id/tvDesc"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:layout_alignLeft="@+id/tvTitle"

        android:layout_below="@+id/tvTitle"

        android:text="desc"

        android:textSize="18sp" />

      <TextView

        android:id="@+id/tvTime"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:layout_alignParentRight="true"

        android:text="time"

        android:textSize="10sp"

        />

    </RelativeLayout>

    注意:此item中需要顯示單個(gè)圖片,所以用到Bitmap這個(gè)類。由于用到網(wǎng)絡(luò)傳輸,所以需要用到線程這個(gè)概念??!

    關(guān)鍵理解handler message以及l(fā)oop這三者的關(guān)系。

    以上就是本文的全部內(nèi)容,希望對大家學(xué)習(xí)Android軟件編程有所幫助。

    更多信息請查看網(wǎng)絡(luò)編程
    易賢網(wǎng)手機(jī)網(wǎng)站地址:基于PHP后臺的Android新聞瀏覽客戶端
    由于各方面情況的不斷調(diào)整與變化,易賢網(wǎng)提供的所有考試信息和咨詢回復(fù)僅供參考,敬請考生以權(quán)威部門公布的正式信息和咨詢?yōu)闇?zhǔn)!

    2026上岸·考公考編培訓(xùn)報(bào)班

    • 報(bào)班類型
    • 姓名
    • 手機(jī)號
    • 驗(yàn)證碼
    關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺 | 手機(jī)站點(diǎn) | 投訴建議
    工業(yè)和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網(wǎng)安備53010202001879號 人力資源服務(wù)許可證:(云)人服證字(2023)第0102001523號
    云南網(wǎng)警備案專用圖標(biāo)
    聯(lián)系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關(guān)注公眾號:hfpxwx
    咨詢QQ:1093837350(9:00—18:00)版權(quán)所有:易賢網(wǎng)
    云南網(wǎng)警報(bào)警專用圖標(biāo)