Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在视图寻呼机中传递Json图像_Java_Android_Json - Fatal编程技术网

Java 在视图寻呼机中传递Json图像

Java 在视图寻呼机中传递Json图像,java,android,json,Java,Android,Json,我试图在视图页面中传递Json数据,它没有显示任何错误。但是它也没有在查看页面中显示图像,我无法理解我的错误 JSON: Banner.java public class Banner extends Fragment { ViewPager bannerpager; ArrayList<Data> bannerdta = new ArrayList<Data>(); BannerAdapter bannerAdapter; @Nulla

我试图在视图页面中传递Json数据,它没有显示任何错误。但是它也没有在查看页面中显示图像,我无法理解我的错误

JSON:

Banner.java

public class Banner extends Fragment {
    ViewPager bannerpager;
    ArrayList<Data> bannerdta = new ArrayList<Data>();
    BannerAdapter bannerAdapter;

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View bannerp = inflater.inflate(R.layout.banner, container, false);
        bannerpager = (ViewPager) bannerp.findViewById(R.id.bannerpager);
        bannerpager.setAdapter(bannerAdapter);
        bannerAdapter = new BannerAdapter(bannerdta, getActivity());
        loadbanner();
        return bannerp;
    }

    private void loadbanner() {
        String bannerurl = "http://www.souqalkhaleejia.com/webapis/banners.php";
        JsonObjectRequest bannerreq = new JsonObjectRequest(Request.Method.GET, bannerurl, new Response.Listener<JSONObject>() {
            @Override
            public void onResponse(JSONObject response) {
                try {
                    JSONArray banners = response.getJSONArray("banners");
                    for (int i = 0; i < banners.length(); i++) {
                        JSONObject banner1 = banners.getJSONObject(i);
                        Data banndata = new Data();
                        banndata.setBannerimages(banner1.getString("image"));
                        bannerdta.add(banndata);
                    }

                } catch (JSONException e) {
                    e.printStackTrace();
                }
                bannerAdapter.notifyDataSetChanged();
            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                Toast.makeText(getActivity(), "" + error, Toast.LENGTH_SHORT).show();
            }
        });
        AppController.getInstance().addToRequestQueue(bannerreq);
    }
}
Adapter.java

public class BannerAdapter extends PagerAdapter {
    Context cntx;
    private ArrayList<Data> blist;
    private LayoutInflater binflater;

    public BannerAdapter(ArrayList<Data> blist, Context cntx) {
        this.blist = blist;
        this.cntx = cntx;
        binflater= (LayoutInflater) cntx.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    }

    @Override

    public int getCount() {
        return blist.size();
    }

    @Override
    public boolean isViewFromObject(View view, Object object) {
        return object==view;
    }

    @Override
    public Object instantiateItem(ViewGroup container, int position) {
        View view=binflater.inflate(R.layout.banner_layout,container,false);
        NetworkImageView bannerimage= (NetworkImageView) view.findViewById(R.id.bannerimage);
        Data bannerdata=blist.get(position);
        ImageLoader imageLoader=AppController.getInstance().getImageLoader();
        bannerimage.setImageUrl(bannerdata.getBannerimages(),imageLoader);
        view.setTag(bannerdata);
        container.addView(view);
        Log.i("Banner", "instantiateItem() [position: " + position + "]" + " childCount:" + container.getChildCount());
        return view;
    }

    @Override
    public void destroyItem(ViewGroup container, int position, Object object) {
        container.removeView((View) object);
        Log.i("Banner", "destroyItem() [position: " + position + "]" + " childCount:" + container.getChildCount());
    }

    @Override
    public int getItemPosition(Object object) {
        Data data= (Data) ((View) object).getTag();
        int position=blist.indexOf(data);
        if(position>=0){
            return position;
        }else {
            return POSITION_NONE;
        }
    }
}
我正在将另一个类的viewpager添加到主页 Home.xml

banner.xmli在这里编写了viewpager xml,并包含在主布局中

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
    <android.support.v4.view.ViewPager
        android:id="@+id/bannerpager"
        android:layout_width="match_parent"
        android:layout_height="200dp"/>

</LinearLayout>
banner_layout.xml图像为单视图寻呼机

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
<com.android.volley.toolbox.NetworkImageView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/bannerimage"/>
</LinearLayout>
您没有将BannerData更新为BannerDapter,因此BannerDapter.notifyDataSetChanged将不起作用。 您可以在BannerAdapter.class中添加方法updateDataData Bannda pubilc void UpdateData banndata{ blist.Addbannda; 改变数据; }
在调用网络请求成功后,使用BanneRadapter.updateDatabanndata

您使用的是哪个Imageloader库?我使用的是volley库您可以在这里发布NetworkImageView的代码吗。公共Imageloader getImageLoader{getRequestQueue;如果mImageLoader==null{mImageLoader=new imageloader this.mRequestQueue,new LruBitmapCache;}返回这个.mImageLoader;}这是你的网络图像视图??我想这是另外一回事
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
<com.android.volley.toolbox.NetworkImageView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/bannerimage"/>
</LinearLayout>