PDA

View Full Version : کمک در نمایش listview



mazimazi
جمعه 04 اردیبهشت 1394, 19:30 عصر
با سلام. من برنامه ای شروع کردم که تعدادی دیتا رو به صورت کد جیسون از سمت سرور میگیره و در listview نمایش میده. ولی بعد از اجرای برنامه لیست ویو خالی نمایش داده میشه و دومین بار که اجرا میکم لیست ویو رو با دیتا نمایش میده مشکلم از کجاست ؟


Main Code :




public class StartupActivity extends Activity {

private ArrayAdapter adapter;


@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

final ListView lstContent = (ListView) findViewById(R.id.lstContent);

adapter = new AdapterNote(G.tasks);
lstContent.setAdapter(adapter);

TestModuleWebservice.test2();
adapter.notifyDataSetChanged();

}


@Override
protected void onResume() {
super.onResume();
adapter.notifyDataSetChanged();

}








public class TestModuleWebservice {

public static void test2() {
ModuleWebservice module = new ModuleWebservice();
ModuleWebservice.Listener listener = new ModuleWebservice.Listener() {

@Override
public void onDataReceive(String data) {
Log.i("LOG", "Webservice Data: " + data);
if (data != null) {
try {
G.tasks.clear();
JSONArray tasks = new JSONArray(data);
for (int i = 0; i < tasks.length(); i++) {
JSONObject object = tasks.getJSONObject(i);
StructTask task = new StructTask();
task.id = object.getLong("task_id");
task.title = object.getString("task_title");
task.desc = object.getString("task_desc");
task.done = object.getInt("task_done") == 1 ? true : false;

G.tasks.add(task);

}
}
catch (JSONException e) {
e.printStackTrace();
}
}
}


@Override
public void onFail(int statusCode) {
switch (statusCode) {
case ModuleWebservice.IO_EXCEPTION:
Log.i("LOG", "IO Exception");
break;

case ModuleWebservice.PROTOCOL_EXCEPTION:
Log.i("LOG", "PROTOCOL Exception");
break;

case ModuleWebservice.UNKNOWN_EXCEPTION:
Log.i("LOG", "UNKNOWN Exception");
break;
}
}
};

ArrayList<NameValuePair> input = new ArrayList<NameValuePair>();
input.add(new BasicNameValuePair("name", "Behnam"));

module.url("http://192.168.1.51/note-server2/")
.inputArguments(input)
.listener(listener)
.cacheDir(G.DIR_CACHE)
.enableCache(true)
.cacheExpireTime(3)
.connectionTimeout(3000)
.socketTimeout(5000)
.read();

}
}

storm_saeed
جمعه 04 اردیبهشت 1394, 19:57 عصر
اگه ModuleWebservice بصورت اسنکرون عمل کنه اونوقت adapter.notifyDataSetChanged(); رو باید موقع onDataReceive صدا بزنی
البته یه راه بهترم اینه که اداپتر لیست ویو رو موقعی ست کنید که دیتا رو بطور کامل گرفتید

mazimazi
جمعه 04 اردیبهشت 1394, 20:33 عصر
اگه ModuleWebservice بصورت اسنکرون عمل کنه اونوقت adapter.notifyDataSetChanged(); رو باید موقع onDataReceive صدا بزنی
البته یه راه بهترم اینه که اداپتر لیست ویو رو موقعی ست کنید که دیتا رو بطور کامل گرفتید
تست کردم ولی باز هم خالی نشون میده ؟!