android - fragment 中的 adapter.notifyDataSetChanged()

标签 android adapter notifydatasetchanged

我想在我的 Fragment 中使用 ListViewGridView 但我在这一行中遇到错误:

adapter.notifyDataSetChanged(); 

我的错误是 NullpointException,我正在使用库支持版本 4。

    public class Gallery_fragment extends FragmentActivity {

        private ViewGroup                       layout;
    public static Database                  db;
    private View                            view;

    public static ArrayAdapter              adapter;
    public static ArrayList<StructureImage> images  = new ArrayList<StructureImage>();
    public static ArrayList<StructureImage> images2 = new ArrayList<StructureImage>();


    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
        setContentView(R.layout.gallery);

        ViewPager viewPager = (ViewPager) findViewById(R.id.viewPager);

        PagerAdapter adapter = new PagerAdapter(this, getSupportFragmentManager());
        viewPager.setAdapter(adapter);

        this.db = new Database(this);
        db.database();

        getImageListFromServer();

        //        GridView list = (GridView) layout.findViewById(R.id.list);
        //        list.setAdapter(new AdapterImage(images));

    }//end oncreate


    private void getImageListFromServer() {
        String result = Webservice.readUrl("http://192.168.1.100/file-server/service.php", null);
        if (result != null) {
            try {
                db.open();
                JSONArray tasks = new JSONArray(result);

                String[] array_1 = new String[100];
                for (int i1 = 0; i1 < db.count_gallery(); i1++) {
                    array_1[i1] = db.Display_gallery(i1, 0);

                }

                for (int i = 0; i < tasks.length(); i++) {
                    JSONObject object = tasks.getJSONObject(i);

                    String id = object.getString("id");
                    String title = object.getString("title");
                    String tozihat = object.getString("tozihat");
                    String thumbnail = object.getString("thumbnail");

                    int pars = Integer.parseInt(id);

                    Log.i("LOG", "i=" + i);
                    if (Arrays.asList(array_1).contains(id)) {
                        Log.i("LOG", "NO ! new Record");

                    } else {//new id}

                        db.inser_gallery(pars, title, tozihat, thumbnail);

                    }

                }
            }
            catch (JSONException e) {
                e.printStackTrace();
            }
        }
        db.close();
        fill_listview();
    }


    private void getImageListFromServer2() {
        String result = Webservice.readUrl("http://192.168.1.100/file-server/service.php", null);
        if (result != null) {
            try {
                db.open();
                JSONArray tasks = new JSONArray(result);

                String[] array_1 = new String[100];
                for (int i1 = 0; i1 < db.count_news(); i1++) {
                    array_1[i1] = db.Display_news(i1, 0);

                }

                for (int i = 0; i < tasks.length(); i++) {
                    JSONObject object = tasks.getJSONObject(i);

                    String id = object.getString("id");
                    String title = object.getString("title");
                    String tozihat = object.getString("tozihat");
                    String thumbnail = object.getString("thumbnail");

                    int pars = Integer.parseInt(id);

                    Log.i("LOG", "i=" + i);
                    if (Arrays.asList(array_1).contains(id)) {
                        Log.i("LOG", "NO ! new Record");

                    } else {//new id}

                        db.inser_news(pars, title, tozihat, thumbnail);

                    }

                }
            }
            catch (JSONException e) {
                e.printStackTrace();
            }
        }
        db.close();
        fill_listview2();
    }


    private void fill_listview() {
        images.clear();
        G.pagenumber.clear();
        G.imageIds.clear();
        G.imageTitles.clear();
        G.filenaming.clear();
        db.open();
        G.dbcountposition = db.count_gallery();
        for (int i = 0; i < db.count_gallery(); i++) {
            StructureImage image = new StructureImage();

            image.id = db.Display_gallery(i, 0);
            image.title = db.Display_gallery(i, 1);
            image.tozihat = db.Display_gallery(i, 2);
            image.thumbnail = db.Display_gallery(i, 3);
            // Start - add for view pager
            int imageId = G.context.getResources().getIdentifier("image" + db.Display_gallery(i, 0), "drawable", G.context.getPackageName());
            Log.i("LOG", "image id: " + imageId);
            G.pagenumber.add(i);
            G.imageIds.add(imageId);
            G.imageTitles.add("" + db.Display_gallery(i, 1));
            G.filenaming.add("" + db.Display_gallery(i, 3));
            // End
            int pp = Integer.parseInt(db.Display_gallery(i, 0));
            Log.i("LOG2", pp + "---  1");
            if (pp > 17) {
                Log.i("LOG2", "image.thumbnail" + image.thumbnail);
                DownloadManager.addToDownloadList(image.thumbnail);
            }
            images.add(image);

        }

        Collections.sort(images);
        Collections.reverse(images);
        adapter.notifyDataSetChanged();
        db.close();
    }


    private void fill_listview2() {
        images2.clear();
        G.pagenumber2.clear();
        G.imageIds2.clear();
        G.imageTitles2.clear();
        G.filenaming2.clear();
        db.open();
        G.dbcountposition2 = db.count_news();
        for (int i = 0; i < db.count_news(); i++) {
            StructureImage image = new StructureImage();

            image.id = db.Display_news(i, 0);
            image.title = db.Display_news(i, 1);
            image.tozihat = db.Display_news(i, 2);
            image.thumbnail = db.Display_news(i, 3);
            // Start - add for view pager
            int imageId = G.context.getResources().getIdentifier("image" + db.Display_news(i, 0), "drawable", G.context.getPackageName());
            Log.i("LOG", "image id: " + imageId);
            G.pagenumber2.add(i);
            G.imageIds2.add(imageId);
            G.imageTitles2.add("" + db.Display_news(i, 1));
            G.filenaming2.add("" + db.Display_news(i, 3));
            // End
            int pp = Integer.parseInt(db.Display_news(i, 0));
            Log.i("LOG2", pp + "---  1");
            if (pp > 17) {
                Log.i("LOG2", "image.thumbnail" + image.thumbnail);
                DownloadManager.addToDownloadList(image.thumbnail);
            }
            images.add(image);

        }

        Collections.sort(images2);
        Collections.reverse(images2);
        adapter.notifyDataSetInvalidated();
        db.close();
    }


    private boolean isNetworkConnected() {// chek network
        ConnectivityManager cm = (ConnectivityManager) getSystemService(G.context.CONNECTIVITY_SERVICE);
        NetworkInfo ni = cm.getActiveNetworkInfo();
        if (ni == null) {
            G.internet_con = 0;// No network 
            return false;
        } else
            G.internet_con = 1;// network OK

        return true;
    }


    private void alertdialog() {
        AlertDialog.Builder builder = new AlertDialog.Builder(G.context);
        builder.setIcon(android.R.drawable.ic_dialog_info);
        builder.setTitle("خطا در برقراری ارتباط");
        builder.setMessage(" تنظیمات اینترنت خود را چک کنید و دوباره تلاش کنید");
        builder.setCancelable(false);

        builder.setPositiveButton("خب", new DialogInterface.OnClickListener() {

            @Override
            public void onClick(DialogInterface arg0, int arg1) {
                isNetworkConnected();

                //                intent = new Intent(MainActivity.this, MainActivity.class);
                //                intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                //                startActivity(intent);

            }
        });
        builder.create().show();

    }

}

最佳答案

在您的 onCreate 中,您有一个名为 adapter 的局部变量,您还有一个名为 adapter 的全局变量,您从未设置全局适配器变量,这就是为什么它为空

关于android - fragment 中的 adapter.notifyDataSetChanged(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32254536/

相关文章:

android - Android中推送通知的困惑

java - 无论如何将构造函数参数传递给 JAXB 适配器?

Android RecyclerView 不会更新数据更改

android - acquireNextImage 与 acquireLatestImage 之间的区别

android - 保证替代 onDestroy()?

Android 矩形不工作

android - 用于GridView的Android文本和图像适配器的 fragment

android - 更新数据库后更新listView?

android - 如何从 BroadcastReceiver 刷新 ListView?

android - 在 ListView 中上下滚动后,点赞按钮和点赞计数器重置为旧值