Asynctask 이용하여 서버로부터 데이터를 받아 리스트뷰에 뿌리기
package pak.asynctest;
import java.io.*;
import java.net.*;
import java.util.*;
import android.app.*;
import android.content.*;
import android.os.*;
import android.util.*;
import android.view.*;
import android.widget.*;
public class asynctest extends Activity {
/** Called when the activity is first created. */
//String html;
String items,html;
ArrayList<String> alist;
ArrayAdapter<String> aa;
ListView lv;
int items_len,count=0;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.main);
lv = (ListView)findViewById(R.id.list);
asyncThread();
}
private void asyncThread() { new AsyncTask<Void, String, Void>()
{
private ProgressDialog mPdialog ;
@Override
protected void onCancelled() {
// TODO Auto-generated method stub
super.onCancelled();
}
@Override
protected void onPostExecute(Void result) {
mPdialog.dismiss();
aa = new ArrayAdapter<String>(asynctest.this,android.R.layout.simple_list_item_1);
StringTokenizer string_token = new StringTokenizer(html,"/");
items=string_token.nextToken();
while(!items.equals("!#quit#!")){
aa.add(items);
items=string_token.nextToken();
}
lv.setAdapter(aa);
// Toast.makeText(asynctest.this,html,Toast.LENGTH_SHORT).show();
}
@Override
protected void onPreExecute() {
// TODO Auto-generated method stub
mPdialog = showDialog(asynctest.this,false);
super.onPreExecute();
}
@Override
protected void onProgressUpdate(String... values) {
Log.d("onProUp",values[0]);
}
@Override
protected Void doInBackground(Void... params) {
// TODO Auto-generated method stub
client_join tp = new client_join();
tp.send_msg("ok!!");
tp.receive_msg();
return null;
}
}.execute();
}
private ProgressDialog showDialog(Context context, boolean cancelable) {
// TODO Auto-generated method stub
ProgressDialog dialog = new ProgressDialog(context);
dialog.setMessage("접속중입니다");
dialog.setIndeterminate(true);
dialog.setCancelable(cancelable);
dialog.show();
return dialog;
}
private class client_join{
private static final String serverIP = "ip";
private static final int serverPort = 2222;
Socket socket;
InetAddress serverAddr;
private BufferedReader networkReader;
private BufferedWriter networkWriter;
public client_join()
{
try{
Log.d("TCP", "C: Connecting...");
Log.d("TCP", "!!!!");
serverAddr = InetAddress.getByName(serverIP);
socket = new Socket(serverAddr, serverPort);
networkWriter = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
networkReader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
}catch(IOException e){
}
}
private void send_msg(String msg)
{
PrintWriter out = new PrintWriter(networkWriter, true);
out.println(msg);
}
private void receive_msg(){
try {
html = networkReader.readLine();
Log.d("TCP","html:"+html);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}