Слайдер изображений, используя вид пейджер выборки изображений из MySQL в Android - PullRequest
0 голосов
/ 15 января 2019

Я занимаюсь разработкой приложения для Android со слайдером изображений, получая изображения из MySQL в Android. У меня есть код слайдера изображений с String Array содержит адрес некоторых картинок. Эти изображения отображаются хорошо, но когда я получаю изображения с сервера с залпом, я конвертирую извлеченные адреса в другой массив строк и передаю его, как будто я передаю первый массив строк в адаптере, мое приложение падает.
Android

public class View_Room_Detail extends AppCompatActivity {

LinearLayout dots_layout;
TextView tvRoomType,tvRoomHonorName,tvPrice,tvGenralLocation,tvLocation;
ImageView[] dots;
int roomId;
String [] arr=new String[]{};
ArrayList<RoomGetterSetter> listPro=new ArrayList<RoomGetterSetter>();
//ViewFlipper vFlipper;
private String[] imageUrls = new String[]{
        "https://cdn.pixabay.com/photo/2016/11/11/23/34/cat-1817970_960_720.jpg",
        "https://cdn.pixabay.com/photo/2017/12/21/12/26/glowworm-3031704_960_720.jpg",
        "https://cdn.pixabay.com/photo/2017/12/24/09/09/road-3036620_960_720.jpg"
};
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_view_room_detail);

    dots_layout=(LinearLayout) findViewById(R.id.dotsLayout);
    tvRoomType=(TextView)findViewById(R.id.typeRoom);
    tvRoomHonorName=(TextView)findViewById(R.id.honnorName);
    tvPrice=(TextView)findViewById(R.id.priceRoom);
    tvGenralLocation=(TextView)findViewById(R.id.genralLocation);

    tvRoomType.setText(getIntent().getStringExtra("RoomNameIs"));
    tvRoomHonorName.setText(getIntent().getStringExtra("HonorNameIs"));
    tvPrice.setText(getIntent().getStringExtra("PriceIs"));
    tvGenralLocation.setText(getIntent().getStringExtra("genrallocation"));
    roomId=getIntent().getIntExtra("RoomIdIs",00000);
    fetchImagesForImageSlider(roomId);
    //getIntent().getStringExtra("TeacherNameIs")
    ViewPager viewPager = findViewById(R.id.view_pager);


    //////////////////////////////////////////////

    StringRequest request = new StringRequest(Request.Method.POST, Constants.URL_GET_PIC_ROOOM_DETAILS,
            new Response.Listener<String>() {
                @Override
                public void onResponse(String response) {
                    //dialog.dismiss();
                    try {

                        //Toast.makeText(View_Room_Detail.this,  response, Toast.LENGTH_LONG).show();
                        JSONObject jsonObject = new JSONObject(response);
                        JSONArray jsonArray= jsonObject.getJSONArray("server_response");
                        for (int i=0;i<jsonArray.length();i++)
                        {

                            JSONObject object=jsonArray.getJSONObject(i);
                            //  imageUrls=object.getString("image_url");
                            RoomGetterSetter subAttendance=new RoomGetterSetter(Constants.URL_GET_ROOM_PICTURE+object.getString("image_url"));
                            Toast.makeText(View_Room_Detail.this, "Response is:"+Constants.URL_GET_ROOM_PICTURE+object.getString("image_url"), Toast.LENGTH_SHORT).show();
                            listPro.add(subAttendance);

                            arr=new String[]{Constants.URL_GET_ROOM_PICTURE+object.getString("image_url"),
                                    Constants.URL_GET_ROOM_PICTURE+object.getString("image_url"),
                                    Constants.URL_GET_ROOM_PICTURE+object.getString("image_url"),
                                    Constants.URL_GET_ROOM_PICTURE+object.getString("image_url")};
                            // System.out.println("array is:"+arr);
                            //imageUrls=arr.clone();
                            for (String pro:arr)
                            {
                                System.out.println("Members is:"+pro);
                            }

                        }
                    } catch (Exception e) {
                        e.printStackTrace();
                    }


                }
            }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
            Toast.makeText(View_Room_Detail.this, "Error is :"+error.getMessage(), Toast.LENGTH_LONG).show();
        }
    }){

        @Override
        protected Map<String, String> getParams() throws AuthFailureError {
            Map<String,String> prams = new HashMap<>();
            prams.put("id", String.valueOf(roomId));


            return prams;
        }
    };
    RequestHandler.getInstance(View_Room_Detail.this).addToRequestQueue(request);

    //////////////////////////////////////////


    //createDots(0);
    ViewPagerAdapter adapter = new ViewPagerAdapter(this, imageUrls);
    viewPager.setAdapter(adapter);

    IndicatorView indicatorView=(IndicatorView)findViewById(R.id.inidicatorView);
    indicatorView.attachViewPager(viewPager);
    }
      }

Первая строка объявлена ​​как

private String [] imageUrls = new String [] { «https://cdn.pixabay.com/photo/2016/11/11/23/34/cat-1817970_960_720.jpg", «https://cdn.pixabay.com/photo/2017/12/21/12/26/glowworm-3031704_960_720.jpg", «https://cdn.pixabay.com/photo/2017/12/24/09/09/road-3036620_960_720.jpg" };

Второй массив:

String [] arr = new String [] {}; заполненный метод OnResponse.

Я печатаю этот массив, он дает мне правильный URL изображения, но когда я передал его в адаптер, он упал.

ViewPagerAdapter adapter = new ViewPagerAdapter(this, arr);
viewPager.setAdapter(adapter);

Вот ссылка, по которой я следую

Ошибка Logcat:

01-15 12:42:17.863 17400-17400/com.example.madnanijaz.studentcouchingcenter E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.madnanijaz.studentcouchingcenter, PID: 17400
java.lang.IndexOutOfBoundsException: Invalid index 0, size is 0
    at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:255)
    at java.util.ArrayList.get(ArrayList.java:308)
    at steelkiwi.com.library.view.IndicatorView.getDrawable(IndicatorView.java:465)
    at steelkiwi.com.library.view.IndicatorView.setIndicatorSelectColor(IndicatorView.java:477)
    at steelkiwi.com.library.view.IndicatorView.prepareDefaultTypeForShow(IndicatorView.java:189)
    at steelkiwi.com.library.view.IndicatorView.access$000(IndicatorView.java:37)
    at steelkiwi.com.library.view.IndicatorView$1.onGlobalLayout(IndicatorView.java:174)
    at android.view.ViewTreeObserver.dispatchOnGlobalLayout(ViewTreeObserver.java:982)

1 Ответ

0 голосов
/ 15 января 2019

Я получил ответ. Массив arr не объявлен правильно. Должно быть:

String [] arr; 

Вместо:

String [] arr=new String[]{};
...