Android 将数据加载到listvcoiew时出错
我正在尝试使用自定义BaseAdapter类从远程服务器将数据加载到listview。除数据未显示在listview上外,一切正常。在日志cat上未生成任何错误。 代码如下: 活动类别:Android 将数据加载到listvcoiew时出错,android,listview,Android,Listview,我正在尝试使用自定义BaseAdapter类从远程服务器将数据加载到listview。除数据未显示在listview上外,一切正常。在日志cat上未生成任何错误。 代码如下: 活动类别: public class MyAccountActivity extends Activity{ public static final String URL="http://***.co.ke/ussd/get_shares.php"; private ProgressDialog progressDialo
public class MyAccountActivity extends Activity{
public static final String URL="http://***.co.ke/ussd/get_shares.php";
private ProgressDialog progressDialog;
private static final String TAG_NUMBER = "share_number";
private static final String TAG_NAME = "share_name";
ArrayList shareList;
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my_account);
ArrayList sharelist = update_shares();
final ListView lv1 = (ListView) findViewById(R.id.mylist);
lv1.setAdapter(new CustomShareListAdapter(this, sharelist));
//ListView listview = getListView();
}
String data="";
public ArrayList update_shares(){
InputStream is=null;
String result="";
String key="admin";
ArrayList results=new ArrayList();
ArrayList<NameValuePair>user_details=new ArrayList<NameValuePair>();
user_details.add(new BasicNameValuePair("user",key));
try{
HttpClient httpClient=new DefaultHttpClient();
HttpPost httpPost=new HttpPost(URL);
httpPost.setEntity(new UrlEncodedFormEntity(user_details));
HttpResponse response=httpClient.execute(httpPost);
HttpEntity entity=response.getEntity();
is=entity.getContent();
}
catch(Exception e){
Log.e("log tag","Error in connection"+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();
for(int i=0;i<jArray.length();i++){
JSONObject json_data = jArray.getJSONObject(i);
String share=json_data.getString(TAG_NAME);
String number=json_data.getString(TAG_NUMBER);
ShareList myshares=new ShareList();
myshares.set_share_name(share);
myshares.set_share_number(number);
results.add(myshares);
}
Toast.makeText(getApplicationContext(), "Parsed ok",Toast.LENGTH_SHORT).show();
}
catch(Exception e){
Log.e("log_tag", "Error parsing data "+e.toString());
}
return results;
}
}
这是shareList类
public class ShareList {
private String share_name;
private String share_number;
public String get_share_name(){
return share_name;
}
public void set_share_name(String share_name){
this.share_name=share_name;
}
public String get_share_number(){
return share_number;
}
public void set_share_number(String share_number){
this.share_number=share_number;
}
public String to_string(){
return "[name="+share_name+",number="+share_number+"]";
}
}
非常感谢您的帮助。谢谢
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
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.apache.http.message.BasicNameValuePair;
import org.json.JSONArray;
import org.json.JSONObject;
import android.app.Activity;
import android.app.ProgressDialog;
import android.os.Bundle;
import android.util.Log;
import android.widget.ListView;
import android.widget.Toast;
public class MyAccountActivity extends Activity{
public static final String URL="http://***.co.ke/ussd/get_shares.php";
private ProgressDialog progressDialog;
private static final String TAG_NUMBER = "share_number";
private static final String TAG_NAME = "share_name";
ArrayList<ShareList> shareList=new ArrayList<ShareList>();
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my_account);
shareList = update_shares();
final ListView lv1 = (ListView) findViewById(R.id.mylist);
lv1.setAdapter(new CustomShareListAdapter(this, sharelist));
//ListView listview = getListView();
}
String data="";
public ArrayList<ShareList> update_shares(){
InputStream is=null;
String result="";
String key="admin";
ArrayList<NameValuePair>user_details=new ArrayList<NameValuePair>();
user_details.add(new BasicNameValuePair("user",key));
try{
HttpClient httpClient=new DefaultHttpClient();
HttpPost httpPost=new HttpPost(URL);
httpPost.setEntity(new UrlEncodedFormEntity(user_details));
HttpResponse response=httpClient.execute(httpPost);
HttpEntity entity=response.getEntity();
is=entity.getContent();
}
catch(Exception e){
Log.e("log tag","Error in connection"+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();
for(int i=0;i<jArray.length();i++){
JSONObject json_data = jArray.getJSONObject(i);
String share=json_data.getString(TAG_NAME);
String number=json_data.getString(TAG_NUMBER);
shareList.add(new ShareList(share, number));
}
Toast.makeText(getApplicationContext(), "Parsed ok",Toast.LENGTH_SHORT).show();
}
catch(Exception e){
Log.e("log_tag", "Error parsing data "+e.toString());
}
return shareList;
}
}
如上所述更改您的共享列表,它可以正常工作我忘了在MyAccountActivity活动的try部分分析结果
JSONArray jArray=new JSONArray();
应该是
JSONArray jarray=new JSONArray(result);
将您的共享列表放入类处理方式错误,请给我指示,请您输入代码,但有什么错误?您应该使用asynctask进行与网络相关的操作
HttpResponse response=httpClient.execute(httpPost)
。您是否获得NetWorkOnMainThreadException?打印收到的字符串并检查是否有任何内容到达
JSONArray jArray=new JSONArray();
JSONArray jarray=new JSONArray(result);