Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/347.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 ViewPager无法从服务器获取图像_Java_Android_Json_Server_Android Viewpager - Fatal编程技术网

Java ViewPager无法从服务器获取图像

Java ViewPager无法从服务器获取图像,java,android,json,server,android-viewpager,Java,Android,Json,Server,Android Viewpager,我在我的应用程序中使用ViewPager,并从服务器获取数据(图像)(带有JSON)。即使运行平稳,viewpager中也不会显示图像 我读了很多关于这个的教程,但是没有人解决我的问题。请告诉我哪里错了 这是我的密码: 查看页面.xml <android.support.v4.view.ViewPager android:id="@+id/viewpager" android:layout_width="match_parent" android:layout_he

我在我的应用程序中使用ViewPager,并从服务器获取数据(图像)(带有JSON)。即使运行平稳,viewpager中也不会显示图像

我读了很多关于这个的教程,但是没有人解决我的问题。请告诉我哪里错了

这是我的密码:

查看页面.xml

<android.support.v4.view.ViewPager
    android:id="@+id/viewpager"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_marginBottom="40dp" />
<ImageView
    android:id="@+id/image_adapter"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_centerInParent="true"/>

image\u view.xml

<android.support.v4.view.ViewPager
    android:id="@+id/viewpager"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_marginBottom="40dp" />
<ImageView
    android:id="@+id/image_adapter"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_centerInParent="true"/>

ViewPager\u Adapter.java

public class ViewPager_Adapter extends PagerAdapter {

private String urls;
private LayoutInflater inflater;
private Context context;
ArrayList<String> mylist;

public ViewPager_Adapter(Context context, ArrayList<String> mylist) {
    this.context = context;
    this.urls = urls;
    this.mylist = mylist;
    inflater = LayoutInflater.from(context);
}

@Override
public void destroyItem(ViewGroup container, int position, Object object) {
    container.removeView((View) object);
}

@Override
public int getCount() {
    return mylist.size();
}

@Override
public Object instantiateItem(ViewGroup view, int position) {
    View imageLayout = inflater.inflate(R.layout.image_view, null);
    assert imageLayout != null;
    final ImageView imageView = (ImageView) imageLayout.findViewById(R.id.image_adapter);

    Glide.with(context)
            .load(mylist.get(position))               
            .into(imageView);
    view.addView(imageLayout,0);
    return imageLayout;
}

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

@Override
public void restoreState(Parcelable state, ClassLoader loader) {
}

@Override
public Parcelable saveState() {
    return null;
}
}
public class View_Pager extends Fragment {
private static ViewPager mPager;
JSONArray responsearray = null;
String imageOne;
private static final String TAG_PHOTO_ONE = "Gallery_Full";
ArrayList<String> myList;
HashMap<String, String> get;
ViewPager_Adapter viewpager_adapter;
LinearLayout addimages;
int REQUEST_CODE = 100;

@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.view_pager, null);      
    mPager = view.findViewById(R.id.viewpager);      

    new GetImages().execute(true);

           return view;
}

class GetImages extends AsyncTask<Boolean, Void, String> {

    @Override
    protected String doInBackground(Boolean... booleans) {
        ImageApi imageApi = new ImageApi();
        String result = null;
        try {
            result = imageApi.galleryget(sharedPreferences.getString("id", ""));
            JSONObject object = new JSONObject(result);
            if (object.getString("error").equalsIgnoreCase("false")) {
                responsearray = object.getJSONArray("response");
                return "true";
            } else {
                String errormsg = object.getString(result);
                return errormsg;
            }
        } catch (ApiException e) {
            e.printStackTrace();
        } catch (JSONException e) {
            e.printStackTrace();
        }
        return null;
    }

    @Override
    protected void onPostExecute(String s) {
        super.onPostExecute(s);
        if (s != null) {
            if (s.equalsIgnoreCase("true")) {
                showList(responsearray);
            }
        }
    }
}

public void showList(final JSONArray responsearray) {
    try {
        for (int i = 0; i < responsearray.length(); i++) {
            JSONObject responseObject = responsearray.getJSONObject(i);
            Log.e("COUNT" + i, String.valueOf(responseObject));
            imageOne = responseObject.getString(TAG_PHOTO_ONE);                
            get = new HashMap<>();
            get.put(TAG_PHOTO_ONE, imageOne);
            myList = new ArrayList<>();
            myList.add(String.valueOf(get));
        }

            viewpager_adapter = new ViewPager_Adapter(getActivity(), myList);
            String test = String.valueOf(myList);
            String imgpath = getString(R.string.imgpath);
            String finalimgpath = imgpath + imageOne;
            Log.e("FINALPATH", finalimgpath);

    } catch (JSONException e) {
        e.printStackTrace();
    }
    mPager.setAdapter(viewpager_adapter);
    viewpager_adapter.notifyDataSetChanged();
}
}
public class ViewPager_适配器扩展了PagerAdapter{
私有字符串URL;
私人充气机;
私人语境;
ArrayList mylist;
公共ViewPager_适配器(上下文上下文,ArrayList mylist){
this.context=上下文;
this.url=url;
this.mylist=mylist;
充气器=充气器。从(上下文);
}
@凌驾
公共项(视图组容器、int位置、对象){
container.removeView((视图)对象);
}
@凌驾
public int getCount(){
返回mylist.size();
}
@凌驾
公共对象实例化项(视图组视图,int位置){
视图imageLayout=充气机。充气(R.layout.image\u视图,空);
断言imageLayout!=null;
final ImageView ImageView=(ImageView)imageLayout.findviewbyd(R.id.image\u适配器);
带(上下文)滑动
.load(mylist.get(位置))
.进入(图像视图);
view.addView(imageLayout,0);
返回图像布局;
}
@凌驾
公共布尔值isViewFromObject(视图,对象){
返回视图.equals(对象);
}
@凌驾
公共无效恢复状态(可包裹状态,类装入器){
}
@凌驾
公共包裹存储状态(){
返回null;
}
}
查看页面.Java

public class ViewPager_Adapter extends PagerAdapter {

private String urls;
private LayoutInflater inflater;
private Context context;
ArrayList<String> mylist;

public ViewPager_Adapter(Context context, ArrayList<String> mylist) {
    this.context = context;
    this.urls = urls;
    this.mylist = mylist;
    inflater = LayoutInflater.from(context);
}

@Override
public void destroyItem(ViewGroup container, int position, Object object) {
    container.removeView((View) object);
}

@Override
public int getCount() {
    return mylist.size();
}

@Override
public Object instantiateItem(ViewGroup view, int position) {
    View imageLayout = inflater.inflate(R.layout.image_view, null);
    assert imageLayout != null;
    final ImageView imageView = (ImageView) imageLayout.findViewById(R.id.image_adapter);

    Glide.with(context)
            .load(mylist.get(position))               
            .into(imageView);
    view.addView(imageLayout,0);
    return imageLayout;
}

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

@Override
public void restoreState(Parcelable state, ClassLoader loader) {
}

@Override
public Parcelable saveState() {
    return null;
}
}
public class View_Pager extends Fragment {
private static ViewPager mPager;
JSONArray responsearray = null;
String imageOne;
private static final String TAG_PHOTO_ONE = "Gallery_Full";
ArrayList<String> myList;
HashMap<String, String> get;
ViewPager_Adapter viewpager_adapter;
LinearLayout addimages;
int REQUEST_CODE = 100;

@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.view_pager, null);      
    mPager = view.findViewById(R.id.viewpager);      

    new GetImages().execute(true);

           return view;
}

class GetImages extends AsyncTask<Boolean, Void, String> {

    @Override
    protected String doInBackground(Boolean... booleans) {
        ImageApi imageApi = new ImageApi();
        String result = null;
        try {
            result = imageApi.galleryget(sharedPreferences.getString("id", ""));
            JSONObject object = new JSONObject(result);
            if (object.getString("error").equalsIgnoreCase("false")) {
                responsearray = object.getJSONArray("response");
                return "true";
            } else {
                String errormsg = object.getString(result);
                return errormsg;
            }
        } catch (ApiException e) {
            e.printStackTrace();
        } catch (JSONException e) {
            e.printStackTrace();
        }
        return null;
    }

    @Override
    protected void onPostExecute(String s) {
        super.onPostExecute(s);
        if (s != null) {
            if (s.equalsIgnoreCase("true")) {
                showList(responsearray);
            }
        }
    }
}

public void showList(final JSONArray responsearray) {
    try {
        for (int i = 0; i < responsearray.length(); i++) {
            JSONObject responseObject = responsearray.getJSONObject(i);
            Log.e("COUNT" + i, String.valueOf(responseObject));
            imageOne = responseObject.getString(TAG_PHOTO_ONE);                
            get = new HashMap<>();
            get.put(TAG_PHOTO_ONE, imageOne);
            myList = new ArrayList<>();
            myList.add(String.valueOf(get));
        }

            viewpager_adapter = new ViewPager_Adapter(getActivity(), myList);
            String test = String.valueOf(myList);
            String imgpath = getString(R.string.imgpath);
            String finalimgpath = imgpath + imageOne;
            Log.e("FINALPATH", finalimgpath);

    } catch (JSONException e) {
        e.printStackTrace();
    }
    mPager.setAdapter(viewpager_adapter);
    viewpager_adapter.notifyDataSetChanged();
}
}
公共类视图\u页导航扩展了片段{
专用静态寻呼机;
JSONArray responsearray=null;
字符串图像一;
私有静态最终字符串标记\u PHOTO\u ONE=“Gallery\u Full”;
ArrayList myList;
HashMap-get;
ViewPager_适配器ViewPager_适配器;
线性布局附加图像;
int请求_代码=100;
@可空
@凌驾
创建视图时的公共视图(@NonNull LayoutInflater inflater、@Nullable ViewGroup container、@Nullable Bundle savedInstanceState){
视图=充气机。充气(R.layout.View\u页面,空);
mPager=view.findviewbyd(R.id.viewpager);
新建GetImages().execute(true);
返回视图;
}
类GetImages扩展异步任务{
@凌驾
受保护字符串doInBackground(布尔值…布尔值){
ImageApi ImageApi=新的ImageApi();
字符串结果=null;
试一试{
结果=imageApi.galleryget(SharedReferences.getString(“id”);
JSONObject对象=新的JSONObject(结果);
if(object.getString(“error”).equalsIgnoreCase(“false”)){
responsearray=object.getJSONArray(“响应”);
返回“真”;
}否则{
String errormsg=object.getString(结果);
返回errormsg;
}
}捕获(APIE){
e、 printStackTrace();
}捕获(JSONException e){
e、 printStackTrace();
}
返回null;
}
@凌驾
受保护的void onPostExecute(字符串s){
super.onPostExecute(s);
如果(s!=null){
如果(s.equalsIgnoreCase(“真”)){
展示列表(回应栏);
}
}
}
}
公共无效显示列表(最终JSONArray响应RAY){
试一试{
对于(int i=0;i
在For循环中,您每次都在初始化列表

for (int i = 0; i < responsearray.length(); i++) {
            JSONObject responseObject = responsearray.getJSONObject(i);
            Log.e("COUNT" + i, String.valueOf(responseObject));
            imageOne = responseObject.getString(TAG_PHOTO_ONE);                
            get = new HashMap<>();
            get.put(TAG_PHOTO_ONE, imageOne);
            myList = new ArrayList<>();  // THIS IS WRONG. don't initialise every time 
            myList.add(String.valueOf(get)); // THIS IS ALSO WRONG. you are adding hashmap object to list
        } 
for(int i=0;i
这样做你的for循环

   myList = new ArrayList<>(); 

for (int i = 0; i < responsearray.length(); i++) {
            JSONObject responseObject = responsearray.getJSONObject(i);
            Log.e("COUNT" + i, String.valueOf(responseObject));
            imageOne = responseObject.getString(TAG_PHOTO_ONE);                
            get = new HashMap<>();
            get.put(TAG_PHOTO_ONE, imageOne);             
            myList.add(imageOne);
        } 
myList=newarraylist();
对于(int i=0;i
将此代码用于
showList()
,因为您没有正确填充阵列列表,所以数据在一个位置被重写

所以,您要做的是在for循环的外部初始化它。

public void showList(final JSONArray responsearray) {
 try {

    //here  
    myList = new ArrayList<>();

    for (int i = 0; i < responsearray.length(); i++) {
        JSONObject responseObject = responsearray.getJSONObject(i);
        Log.e("COUNT" + i, String.valueOf(responseObject));
        imageOne = responseObject.getString(TAG_PHOTO_ONE);                
        get = new HashMap<>();
        get.put(TAG_PHOTO_ONE, imageOne);

        myList.add(String.valueOf(get));
    }

        viewpager_adapter = new ViewPager_Adapter(getActivity(), myList);
        String test = String.valueOf(myList);
        String imgpath = getString(R.string.imgpath);
        String finalimgpath = imgpath + imageOne;
        Log.e("FINALPATH", finalimgpath);

} catch (JSONException e) {
    e.printStackTrace();
}
mPager.setAdapter(viewpager_adapter);
viewpager_adapter.notifyDataSetChanged();
}

你调试过你的代码了吗?你从API响应中得到数据了吗?是的,我从API中得到了正确的数据你在这里得到了什么
mylist.get(position)
@Manoj Perumarath在这张我得到的图片中name@KaranKumar您需要图像url以按照您的说明i加载图像