آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

مشکل درModuleWebservice

alireza  11 سال پیش  11 سال پیش
0 0

سلام 

دوستان ببخشید من ماژول وب سرویس استاد رو برای خوندن اطلاعات از سرور استفاده کردم ببیند پروژه note  استاد رو  وب سرویسش رو با ماژول وب سرویس عوض کردم و اطلاعات رو از سرور می خونم روی دیتا بیس گوشی ذخیره می کنم و اطلاعات از دیتابیس گوشی می خونم و با یک لیست ویو نمایش می دم 

حالا ببینید این برنامه کاملا درست و بدون هیچ ایرادی کار می کنه فقط یه مشکل هست وقتی دیتا بیس گوشی خالی هست یعنی برنامه برای بار اول run  میشه اطلاعات خونده میشه و روی دیتا بیس گوشی ذخیر میشه ولی لیست ویو چیزی نمایش نمی ده و وقتی خارج شم و دوباره وارد شم همه چیز رو نمایش می ده 

خب مشکلی که من فکر می کنم هست اینه که ساخت لیست ویو که توی اکتیویتی main  تعریف شده قبل از خوندن اطلاعات از سرور و ذخیره شدن روی دیتا بیس گوشی انجام میشه و درواقع لیست ویو از یک دیتابیس خالی ساخته میشه 

من اومدم خوندن اطلاعات از سرور و ذخیره روی دیتا بیس گوشی رو توی یه متد گذاشتم و توی ActivityMain  ام قبل از هر چیزی این متد رو فراخوانی میکنم ولی باز هم این مشکل هست در حالی که منطقا باید این خط کد اجرا بشه و دیتا بیس پر بشه بعد لیست ویو ساخته بشه ؟؟ 

یکی می تونه بگه ممکنه کجا مشکل داشته باشه یه راه حلی چیزی بگه دیگه دارم دیونه میشم ! ممنون 

0 0
من هم همین مشکلو دارم :( . کسی جواب بده خیلی خوب میشه :( (11 سال پیش)
0 0
باید بعد از اینکه اطلاعات خونده شد و تو دیتابیس ذخیره شد متد () notifyDataSetChanged رو روی adapter اجرا کنید (11 سال پیش)
0 0
خب من از این متد استفاده کردم وقتی که دارم اطلاعات رو از دیتابیس می خونم بعد از این خوندن نوش (11 سال پیش)
0 0
بعد از این خوندن نوشتم این کد رو ولی جواب نمی ده (11 سال پیش)
0 0
خود ماژول وب سرویس مساله ای توش نیست که موجب این موضوع بشه ؟ چون من اول این برنامه رو با همون وب سرویس برنامه note نوشته بودم و مشکلی نداشت (11 سال پیش)
+1 0
فک کنم یه مشکل تو ماژول هم بود . تو یه قسمت readfromcache اگه جسون بیشتر از یک کیلوبایت بشه خونده نمیشد که باید هنگام خوندن به جای inputStream.read(buffer, 0, bytesLength از متد readFully استفاده بشه (11 سال پیش)
0 0
منم همین مشکل رو دارم . اگه کسی میدومه کمک کنید . مرسی (11 سال پیش)
0 0
ساختار کدتون ایراد داره . قسمتی از کد مربوطه رو قرار بدید تا بررسی بشه کرد . (11 سال پیش)
 برای این سوال 1 پاسخ وجود دارد.
پاسخ به سوال 
ba2ever  11 سال پیش
0 0

من لیستم بعضی وقتا پر میشه و بعضی وقتا نمیشه ..
وقتی لیستم پر هست و وارد قسمت 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();
    }
}

 


پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .