Android-サーバ側からファイルを読み取り、画像コンテンツをダウンロード
11316 ワード
目次
ステップ1:ビューの作成が完了しました
ステップ2:ビューのバインド-activityの作成
ステップ3でAdapterを作成しますが、まずAdapterに必要なスタイルXMLを作成します.
ステップ4:Adapterの作成
ステップ5:servletのjsonファイル
ステップ6:ネットワーク権限とビューバインドの構成
/*の例:*1は、サービス側のjson情報をロードし、この情報はデータベースによって生成された*2であり、jsonに含まれる情報:Usersオブジェクト、このオブジェクトの属性:id、name、age、tupain*3、この4つの属性idは表示されず、nameとageはusersに格納できるが、画像には顔画像の名前*4が格納されている.また、この名前に基づいてスレッドを開いてダウンロード*5を行い、ダウンロード後に画像配列とusers配列をadapterに転送してlistview*に注入する手順:*servlet---->*スレッドを開いてjson---->*解析json---->*textメッセージをusersに保存することを定義します.画像の名前を保存する別の配列-->*名前を保存する配列に基づいて画像をダウンロードする-->*手書きでカスタマイズしたAdapterをダウンロードし、その前にスタイルxmlを書く-->*スタイルビューは画像ビューと2つのTextViewビューなので、BistBsersと1つのListBitmap-->*とコンテキストの3つのパラメータを加えなければなりません.*Adapterを書き終え、MaAdapterを定義してカスタマイズしたAdapteerを継承-->*ページでlistviewビューをこのフィラーにバインドします*/
ステップ1:ビューの作成が完了しました
ステップ2:ビューのバインド-activityの作成
ステップ3でAdapterを作成しますが、まずAdapterに必要なスタイルXMLを作成します.
ステップ4:Adapterの作成
ステップ5:servletのjsonファイル
ステップ6:ネットワーク権限とビューバインドの構成
ステップ1:ビューの作成が完了しました
ステップ2:ビューのバインド-activityの作成
ステップ3でAdapterを作成しますが、まずAdapterに必要なスタイルXMLを作成します.
ステップ4:Adapterの作成
ステップ5:servletのjsonファイル
ステップ6:ネットワーク権限とビューバインドの構成
/*の例:*1は、サービス側のjson情報をロードし、この情報はデータベースによって生成された*2であり、jsonに含まれる情報:Usersオブジェクト、このオブジェクトの属性:id、name、age、tupain*3、この4つの属性idは表示されず、nameとageはusersに格納できるが、画像には顔画像の名前*4が格納されている.また、この名前に基づいてスレッドを開いてダウンロード*5を行い、ダウンロード後に画像配列とusers配列をadapterに転送してlistview*に注入する手順:*servlet---->*スレッドを開いてjson---->*解析json---->*textメッセージをusersに保存することを定義します.画像の名前を保存する別の配列-->*名前を保存する配列に基づいて画像をダウンロードする-->*手書きでカスタマイズしたAdapterをダウンロードし、その前にスタイルxmlを書く-->*スタイルビューは画像ビューと2つのTextViewビューなので、BistBsersと1つのListBitmap-->*とコンテキストの3つのパラメータを加えなければなりません.*Adapterを書き終え、MaAdapterを定義してカスタマイズしたAdapteerを継承-->*ページでlistviewビューをこのフィラーにバインドします*/
ステップ1:ビューの作成が完了しました
ステップ2:ビューのバインド-activityの作成
package com.example.testloadimage;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import org.json.JSONArray;
import org.json.JSONObject;
import com.example.adapter.MyAdapter;
import com.example.entity.Users;
import android.app.Activity;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.widget.ListView;
import android.widget.Toast;
/*
* :
* 1, json ,
* 2,json : Users , :id,name,age,tupain
* 3, id ,name age users,
* 4,
* 5, users adapter listview
*
* :
* json servlet----->
* json----->
* json----->
* text users, ----->
* ----->
* Adapter, xml----->
* TextView , BistBsers ListBitmap----->
* ,
* Adapter MaAdapter Adapteer----->
* listview
*/
public class TestActivity extends Activity{
//
private Handler myHandler;
//
private List lt;
// listview
private ListView listview;
//
private List bis = new ArrayList();
// , ,
private List load = new ArrayList();
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
//
super.setContentView(R.layout.index);
//
myHandler=new MyHandler();
lt = new ArrayList();
listview = (ListView)this.findViewById(R.id.listView1);
// ,
MyThread myThread = new MyThread();
myThread.start();
}
// json
class MyThread extends Thread{
@Override
public void run() {
URL url;
HttpURLConnection conn =null;
try {
// json
url = new URL("http://192.168.1.103:8080/TestAndroid/Goods.json");
conn = (HttpURLConnection)url.openConnection();
// , ,
conn.setDoInput(true);
conn.setDoOutput(true);
conn.setConnectTimeout(50000);
// json
InputStream is = conn.getInputStream();
int data =0;
String neirong = "";
while((data = is.read())!=-1) {
neirong+=(char)data;
}
// , stringjson json
JSONArray array = new JSONArray(neirong);
System.out.println(neirong);
for (int i = 0; i < array.length(); i++) {
//
JSONObject obj = array.getJSONObject(i);
//
int id = obj.getInt("id");
String name = obj.getString("name");
int age = obj.getInt("age");
String tupian = obj.getString("tupian");
// ,
load.add(tupian);
// user ,
Users users = new Users(id, name, age, tupian);
lt.add(users);
}
// json ,
MyLoadThread loadThread = new MyLoadThread();
loadThread.start();
} catch (Exception e) {
e.printStackTrace();
}
}
}
//
class MyLoadThread extends Thread{
@Override
public void run() {
//
for (int i = 0; i < load.size(); i++) {
try {
// , ,
//
URL url = new URL("http://192.168.1.103:8080/TestAndroid/"+load.get(i));
System.out.println("loadtupian=====>"+url);
HttpURLConnection conn = (HttpURLConnection)url.openConnection();
conn.setDoInput(true);
conn.setDoOutput(true);
conn.setConnectTimeout(50000);
// ,
InputStream is = conn.getInputStream();
Bitmap bitmap = BitmapFactory.decodeStream(is);
// , , Adapter
bis.add(bitmap);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
// , , listview
// thread ,
Message msg = new Message();
TestActivity.this.myHandler.sendMessage(msg);
}
}
// ,
class MyAdapter1 extends MyAdapter{
public MyAdapter1(Context context, List lt, List bits) {
super(context, lt, bits);
// TODO Auto-generated constructor stub
}
}
class MyHandler extends Handler{
@Override
public void handleMessage(Message msg) {
// listview Adapter
listview.setAdapter(new MyAdapter1(TestActivity.this, lt, bis));
}
}
}
ステップ3でAdapterを作成しますが、まずAdapterに必要なスタイルXMLを作成します.
ステップ4:Adapterの作成
package com.example.adapter;
import java.util.List;
import org.w3c.dom.Text;
import com.example.entity.Users;
import com.example.testloadimage.R;
import com.example.testloadimage.R.layout;
import android.content.Context;
import android.graphics.Bitmap;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
/*
* Adapter , ,
*/
public class MyAdapter extends BaseAdapter{
//
private Context context;
//json
private List lt;
//
private List bits;
// ,
public MyAdapter(Context context, List lt, List bits) {
super();
this.context = context;
this.lt = lt;
this.bits = bits;
}
// BaseAdapter
// , lt
@Override
public int getCount() {
// TODO Auto-generated method stub
return lt.size();
}
// :
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return lt.get(position);
}
//
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
// , , , listview
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// , ,Android
LayoutInflater inflater = LayoutInflater.from(context);
// , id
View view = inflater.inflate(R.layout.title, null);
// , TextView ImageView
TextView nameText = (TextView)view.findViewById(R.id.textView1);
TextView ageText = (TextView)view.findViewById(R.id.textView2);
ImageView tupain = (ImageView)view.findViewById(R.id.imageView1);
// , , text image
nameText.setText(lt.get(position).getName());
ageText.setText(""+lt.get(position).getAge());
// bitmap ,
tupain.setImageBitmap(bits.get(position));
//
return view;
}
}
ステップ5:servletのjsonファイル
[{"id":1,"name":"jin","age":22,"tupian":"jin1.jpg"},
{"id":2,"name":"qian","age":25,"tupian":"jin2.jpg"}]
ステップ6:ネットワーク権限とビューバインドの構成