بروز خطا
[message]
اشتراک در سوال
رای ها
[dataList]
چرا خروجی بر نمی گردونه
سلام دوستان برنامه اتصال من به اینترنت من هیچی خروحی نشون نمیده یعنی چشه؟
این کد Webserver
package info.androidhive.slidingmenu;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
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 android.util.Log;
public class Webservice {
public static interface listener {
public void onReceived(String string);
}
protected static String result;
public static String readUrl(final String url, final ArrayList<NameValuePair> params, final listener listener) {
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
try {
HttpClient client = new DefaultHttpClient();
HttpPost method = new HttpPost(url);
if (params != null) {
method.setEntity(new UrlEncodedFormEntity(params));
}
HttpResponse response = client.execute(method);
InputStream inputStream = response.getEntity().getContent();
result = convertInputStreamToString(inputStream);
Log.i("LOG", "result = " + result);
if (listener != null) {
listener.onReceived(result);
}
}
catch (ClientProtocolException e) {
Log.v("LOG", "readURL1" + e);
}
catch (IOException e) {
Log.i("LOG", "readURL2" + e);
}
}
});
thread.start();
return result;
}
private static String convertInputStreamToString(InputStream inputStream) {
try {
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
StringBuilder builder = new StringBuilder();
String line = "";
while ((line = reader.readLine()) != null) {
builder.append(line);
}
return builder.toString();
}
catch (IOException e) {
e.printStackTrace();
}
return null;
}
}
اینم تابع فراخوانیم . اینجا چاپ که میکنم اطلاعاتمو نشون میده ولی وقتی آخر تابع چاپ میزنم هیچی برام برنمیگردونه. کامل خالی برمیگردونه .نمیدونم چشه
private void populateFromServer() {
// String url = "http://192.168.1.121/restoran/service.php";
ArrayList<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("action", "read"));
params.add(new BasicNameValuePair("filter", lastFilter));
params.add(new BasicNameValuePair("sort", lastSort));
//String result = Webservice.readUrl(url, params);
Webservice.listener listener = new listener() {
@Override
public void onReceived(String data) {
/// do stuff ...
}
};
String result = Webservice.readUrl("http://192.168.1.121/restoran/service.php", params, listener);
// Log.i("LOG", "result = " + result);
if (result != null) {
try {
applications.clear();
// Log.i("LOG", "result = " + result);
JSONArray apps = new JSONArray(result);
Log.i("LOG", "log = " + apps.length());
for (int i = 0; i < apps.length(); i++) {
JSONObject object = apps.getJSONObject(i);
StructApplication application = new StructApplication();
application.id = object.getString("app_id");
application.name = object.getString("app_name");
application.price = object.getInt("app_price");
application.logoUrl = object.getString("app_logoUrl");
application.description = object.getString("app_description");
applications.add(application);
}
adapter.notifyDataSetChanged();
}
catch (JSONException e) {
e.printStackTrace();
}
}
0
0
ممکنه بعد از اتصال به مودم > آی پی شما تغییر کرده باشه < (11 سال پیش)
0
0
دلیلش اینه thread هنوز کامل نشده شما notifyDataSetChanged میکنی !
کدتون از پایه مشکل داره
اگه میخواید از thread برای دریافت اطلاعات استفاده کنید از خارج از کلاس readurl باید استفاده کنید
یعنی جایی که notifyDataSetChanged موجوده (11 سال پیش)
برای این سوال 2 پاسخ وجود دارد.
پاسخ به سوال
سجاد تاجالدین
11 سال پیش
0
0
من قسمت های مختلف چاپ زدم.داخل ترد که چاپ زدم اطلاعات را درست نشون میده
ولی بیرون ترد و داخل تابع هر جا چاپ میزنم خالی نشون میده
من زیاد ترد را نمیفهمم
آیا ترد بعد از کارش همه متغییرها را خالی میکنه
وای ممنون میشم راهنمایی بفرمایید
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .