Có một số việc đang xảy ra ở đây, tôi sẽ cố gắng giải quyết những gì có thể.
Mục nhật ký này đáng ngờ:
03-22 22:30:42.860: E/ERROR(6055): Illegal character in query at index 53: http://necrecords.16mb.com/getproducts.php?password=A AA E EEE
Ngoài ra, từ nhật ký này:
03-22 22:54:08.000: E/ERROR(7654): Error converting result java.lang.NullPointerException: lock == null
Bạn có thể thấy rằng bạn không nhận được phản hồi hợp lệ từ trang PHP này.
Khối mã này đang đưa ra một ngoại lệ:
//convert response to string
try{
BufferedReader reader = new BufferedReader(new InputStreamReader(is,"utf-8"),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("ERROR", "Error converting result "+e.toString());
Tôi vừa thử URL trong một trình duyệt và nó hoạt động, vì trình duyệt tự động mã hóa url đúng cách, như thế này:
http://necrecords.16mb.com/getproducts.php?password=A%20AA%20E%20EEE
Tôi nghĩ rằng bạn chỉ cần mã hóa URL đúng cách vì chuỗi chứa khoảng trắng.
String query = URLEncoder.encode(mname, "utf-8");
httppost= new HttpPost("http://necrecords.16mb.com/getsongslist.php?password="+query);
response=httpclient.execute(httppost);
Đối với vấn đề danh sách của bạn tăng gấp đôi, bạn chỉ có thể xóa danh sách mỗi khi AsyncTask thực thi:
protected Void doInBackground(Void...params){
InputStream is=null;
String result="";
try{
records.clear(); //clear the list before re-populating
httpclient=new DefaultHttpClient();
httppost= new HttpPost("http://necrecords.16mb.com/getproducts.php");
response=httpclient.execute(httppost);
HttpEntity entity = response.getEntity();
is = entity.getContent();
}catch(Exception e){
Một điều nữa cần đề cập, có thể bạn sẽ muốn tạo một Bộ điều hợp riêng cho mỗi Acitvity. Như hiện tại, bạn đang sử dụng cùng một Bộ điều hợp cho cả hai Hoạt động.
Trong getView()
của Bộ điều hợp của bạn , bạn tham khảo R.id.pro_name
và R.id.pro_uprice
, nhưng bạn đang sử dụng Bộ điều hợp này trong cả hai Hoạt động của mình. Cả hai Hoạt động của bạn có chứa các phần tử này trong xml bố cục của chúng không?
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View itemView = inflater.inflate(groupid, parent, false);
String[] row_items=records.get(position).split("__");
TextView textName= (TextView) itemView.findViewById(R.id.pro_name);
textName.setText(row_items[0]);
TextView textPrice= (TextView) itemView.findViewById(R.id.pro_uprice);
textPrice.setText(row_items[1]+"$");
return itemView;
}