यहां कुछ चीजें चल रही हैं, मैं जो कर सकता हूं उसे संबोधित करने की कोशिश करूंगा।
यह लॉग प्रविष्टि संदिग्ध है:
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
साथ ही, इस लॉग से:
03-22 22:54:08.000: E/ERROR(7654): Error converting result java.lang.NullPointerException: lock == null
आप देख सकते हैं कि आपको इस PHP पृष्ठ से कोई मान्य प्रतिक्रिया नहीं मिल रही है।
यह कोड ब्लॉक एक अपवाद फेंक रहा है:
//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());
मैंने अभी एक ब्राउज़र में यूआरएल की कोशिश की, और यह काम किया, क्योंकि ब्राउज़र स्वचालित रूप से यूआरएल को ठीक से एन्कोड करता है, जैसे:
http://necrecords.16mb.com/getproducts.php?password=A%20AA%20E%20EEE
मुझे लगता है कि स्ट्रिंग में रिक्त स्थान होने के कारण आपको URL को ठीक से एन्कोड करने की आवश्यकता है।
String query = URLEncoder.encode(mname, "utf-8");
httppost= new HttpPost("http://necrecords.16mb.com/getsongslist.php?password="+query);
response=httpclient.execute(httppost);
जहां तक आपकी सूची के दोगुने होने की बात है, आप हर बार AsyncTask के निष्पादित होने पर सूची को साफ कर सकते हैं:
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){
उल्लेख करने के लिए एक और बात, आप शायद प्रत्येक एसिटीविटी के लिए एक अलग एडेप्टर बनाना चाहेंगे। जैसा कि अभी है, आप दोनों गतिविधियों के लिए एक ही एडेप्टर का उपयोग कर रहे हैं।
आपके एडॉप्टर के getView()
. में , आप R.id.pro_name
. का संदर्भ लें और R.id.pro_uprice
, लेकिन आप इस एडेप्टर का उपयोग अपनी दोनों गतिविधियों में कर रहे हैं। क्या आपकी दोनों गतिविधियों में ये तत्व उनके लेआउट xml में शामिल हैं?
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;
}