مشکل درModuleWebservice
سلام
دوستان ببخشید من ماژول وب سرویس استاد رو برای خوندن اطلاعات از سرور استفاده کردم ببیند پروژه note استاد رو وب سرویسش رو با ماژول وب سرویس عوض کردم و اطلاعات رو از سرور می خونم روی دیتا بیس گوشی ذخیره می کنم و اطلاعات از دیتابیس گوشی می خونم و با یک لیست ویو نمایش می دم
حالا ببینید این برنامه کاملا درست و بدون هیچ ایرادی کار می کنه فقط یه مشکل هست وقتی دیتا بیس گوشی خالی هست یعنی برنامه برای بار اول run میشه اطلاعات خونده میشه و روی دیتا بیس گوشی ذخیر میشه ولی لیست ویو چیزی نمایش نمی ده و وقتی خارج شم و دوباره وارد شم همه چیز رو نمایش می ده
خب مشکلی که من فکر می کنم هست اینه که ساخت لیست ویو که توی اکتیویتی main تعریف شده قبل از خوندن اطلاعات از سرور و ذخیره شدن روی دیتا بیس گوشی انجام میشه و درواقع لیست ویو از یک دیتابیس خالی ساخته میشه
من اومدم خوندن اطلاعات از سرور و ذخیره روی دیتا بیس گوشی رو توی یه متد گذاشتم و توی ActivityMain ام قبل از هر چیزی این متد رو فراخوانی میکنم ولی باز هم این مشکل هست در حالی که منطقا باید این خط کد اجرا بشه و دیتا بیس پر بشه بعد لیست ویو ساخته بشه ؟؟
یکی می تونه بگه ممکنه کجا مشکل داشته باشه یه راه حلی چیزی بگه دیگه دارم دیونه میشم ! ممنون
من لیستم بعضی وقتا پر میشه و بعضی وقتا نمیشه ..
وقتی لیستم پر هست و وارد قسمت faviorite میشم و لیست خالی هست و حتما باید دوبار برگردم ب صفحه ی قبل و دوباره برم توو همون صفحه تا اون آیتمی که Faviorite شده رو نشون بده ..
این لیست اصلی بنده :
public class ActivityMusicsList extends EnhancedActivity {
private ListView list;
private static AdapterMusic adapter;
private Button btn_music_back;
private ImageView imgFAV;
private static ArrayList<StructMusic> musics = new ArrayList<StructMusic>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_music_list);
list = (ListView) findViewById(R.id.list);
btn_music_back = (Button) findViewById(R.id.btn_music_back);
imgFAV = (ImageView) findViewById(R.id.imgFAV);
btn_music_back.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
Intent intent = new Intent(G.currentActivity, ActivityContent.class);
G.currentActivity.startActivity(intent);
G.currentActivity.finish();
}
});
imgFAV.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
Intent intent = new Intent(G.currentActivity, ActivityFAV_Music.class);
G.currentActivity.startActivity(intent);
}
});
adapter = new AdapterMusic(musics);
list.setAdapter(adapter);
populateFromServer();
}
@Override
protected void onResume() {
super.onResume();
adapter.notifyDataSetChanged();
}
public static void populateFromServer() {
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 {
musics.clear();
JSONArray apps = new JSONArray(data);
for (int i = 0; i < apps.length(); i++) {
JSONObject object = apps.getJSONObject(i);
StructMusic music = new StructMusic();
music.id = object.getLong("music_id");
music.music_name = object.getString("music_name");
music.singer_name = object.getString("music_singer_name");
music.logoUrl = object.getString("music_logoUrl");
music.file = object.getString("music_file");
musics.add(music);
Log.i("LOG", "file = " + music.file + "music_id = " + music.id + "MusicName = " + music.music_name + "singerName= " + music.singer_name + "logoUrl=" + music.logoUrl);
}
adapter.notifyDataSetChanged();
}
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>();
module.url("http://169.254.72.1/Folkolor/services.php?action=read", null)
.inputArguments(input)
.listener(listener)
.cacheDir(G.DIR_CACHE)
.enableCache(true)
.cacheExpireTime(3)
.connectionTimeout(3000)
.socketTimeout(5000)
.read();
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
Intent intent = new Intent(G.currentActivity, ActivityContent.class);
G.currentActivity.startActivity(intent);
G.currentActivity.finish();
}
return true;
}
}
و اینم لیست faviorite من که برا دفعه ی اول خالی هست .. (( درون log اطلاعات به درستی دریافت میشه ))
public class ActivityFAV_Music extends EnhancedActivity {
private ListView list;
private static AdapterMusic adapter;
private Button btn_music_back;
private static ArrayList<StructMusic> musics = new ArrayList<StructMusic>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_fav_music);
list = (ListView) findViewById(R.id.list);
btn_music_back = (Button) findViewById(R.id.btn_music_back);
btn_music_back.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
Intent intent = new Intent(G.currentActivity, ActivityMusicsList.class);
G.currentActivity.startActivity(intent);
// G.currentActivity.finish();
}
});
adapter = new AdapterMusic(musics);
list.setAdapter(adapter);
populateFromServer();
}
@Override
protected void onResume() {
super.onResume();
adapter.notifyDataSetChanged();
}
public static void populateFromServer() {
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 {
musics.clear();
JSONArray apps = new JSONArray(data);
for (int i = 0; i < apps.length(); i++) {
JSONObject object = apps.getJSONObject(i);
StructMusic music = new StructMusic();
music.id = object.getLong("music_id");
music.music_name = object.getString("music_name");
music.singer_name = object.getString("music_singer_name");
music.logoUrl = object.getString("music_logoUrl");
music.file = object.getString("music_file");
musics.add(music);
Log.i("LOG", "file = " + music.file + "music_id = " + music.id + "MusicName = " + music.music_name + "singerName= " + music.singer_name + "logoUrl=" + music.logoUrl);
}
adapter.notifyDataSetChanged();
}
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;
}
}
};
String aid = G.android_id;
ArrayList<NameValuePair> input = new ArrayList<NameValuePair>();
input.add(new BasicNameValuePair("aid", aid));
module.url("http://169.254.72.1/Folkolor/services.php?action=readfav", input)
.inputArguments(input)
.listener(listener)
.cacheDir(G.DIR_CACHE)
.enableCache(true)
.cacheExpireTime(3)
.connectionTimeout(3000)
.socketTimeout(5000)
.read();
}
}
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .