package test.test;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Vector;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import android.app.ListActivity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
public class test2 extends ListActivity {
InputStream is;
ArrayList<String> results = new ArrayList<String>();
JSONObject json_data;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getData();
}
public void getData() {
String result = "";
ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
try{
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("http://203.241.246.113/555.php");
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
HttpResponse response = httpclient.execute(httppost);
HttpEntity entity = response.getEntity();
is = entity.getContent();
}catch(Exception e){
Log.e("log_tag", "Fehler bei der http Verbindung "+e.toString());
}
try{
BufferedReader reader = new BufferedReader(new InputStreamReader(is,"iso-8859-1"),8);
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null) {
sb.append(line + "n");
}
is.close();
result=sb.toString();
}catch(Exception e){
Log.e("log_tag", "Error converting result "+e.toString());
}
try{
JSONArray jArray = new JSONArray(result);
for(int i=0;i<jArray.length();i++){
json_data = jArray.getJSONObject(i);
results.add((String) json_data.get("uid") + " , 상품명[ " + json_data.get("title") + " ]" );
final String[] results = new String[]{
};
}
}
catch(JSONException e){
Log.e("log_tag", "Error parsing data "+e.toString());
}
this.setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, results));
getListView().setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
// TODO Auto-generated method stub
// System.out.println(arg3);
String[] StringArrayData = null;
try {
StringArrayData = StringArrayData(arg2);
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Intent intent = new Intent (test2.this,test3.class);
Bundle myData = new Bundle();
myData.putStringArray("key",StringArrayData);
intent.putExtras(myData);
startActivity(intent);
}
private String[] StringArrayData(int arg2) throws JSONException {
// TODO Auto-generated method stub
String result = results.get(arg2);
String[] StringArrayData = new String[4];
StringArrayData[0]=(String) json_data.get("uid");
StringArrayData[1]=(String) json_data.get("title");
StringArrayData[2]=(String) json_data.get("content");
StringArrayData[3]=(String) json_data.get("link");
return StringArrayData;
}
});
}
}
안녕하세요... 공지를 읽어도 소스를 어떻게 쓸지몰라서 그냥 씁니다. 죄송합니다.
저 리스트뷰를 클릭할시에 디테일한 액티비티로 넘어가게되어
그 액티비티에서 클릭하였는 정보를 보여주는 프로그램을 만들려고 합니다.
현제 디테일한 화면으로넘어가서 json으로 파싱한 정보를 불러와지기는하는대
0번째 포지션값을 누르든 1번째 포지션값을 누르든 3번째 포지션 값을 누르든
디테일한 화면에는 마지막 포지션값에 해당하는 내용만 뿌려지내요;;;
제 생각으로는
String[] StringArrayData = null;
이게 잘못된것같은대 어떻게.... 뭐가 잘못인지 확실히 모르겟어요 어떻게 바꾸면 될까요 조언쫌부탁드릴깨요.




... 안드로이드쪽은 건드린적 없는 개발자지만...
일단 String[] StringArrayData는 상관 없구요
String[] StringArrayData(int arg2) 이 Method안을 고치셔 야 될거 같습니다.
안에 보시면 데이터를 가져오는 객체를 json_data를 쓰셨는데..
getData() Method안을 보시면..
for(int i=0;i<jArray.length();i++){
json_data = jArray.getJSONObject(i);
results.add((String) json_data.get("uid") + " , 상품명[ " + json_data.get("title") + " ]" );
final String[] results = new String[]{
};
윗코드처럼 for루프 돌면서 jArray의 값을 가져오는 변수로 사용하셧으니...
당연히 젤 마지막 값이 나올수 밖에 없지요..