2013-04-11 2 views
5

Im сталкивается с проблемой с ViewPager Класс, у меня есть три страницы, каждая из которых имеет scrollView, Относительная компоновка и ImageView внутри.Как часто делать обновления ViewPager?

Мне нужно установить цветной фон, когда я нажимаю на ImageView. Моя проблема: Когда я нажимаю на ImageView, чтобы получить его в фоновом режиме с цветом, на другой ImageView в другой странице PagerView появляется цвет фона ...

Например: У меня есть четыре страницы каждый нагруженная с ImageView , когда я нажимаю на первом ImageView на первой странице, то ImageView во второй ViewPager странице заводится цвет фона ..

Мне нужно, чтобы сделать свой первый ImageView (на первой странице), чтобы быть backcoloured ..

Вот треска е ... Это мой пейджер класс адаптера

public class ViewPagerAdapter extends PagerAdapter { 
     private DataSetObserver mObserver; 
     ImageView image,image2; 
     Activity activity; 
     int imageArray[]; 
     Point p; 


     public ViewPagerAdapter(Activity act, int[] imgArra) { 
      imageArray = imgArra; 
      activity = act; 
     } 

     @Override 
     public int getItemPosition(Object object) { 
      // TODO Auto-generated method stub 
      return super.getItemPosition(object); 
     } 

     public int getCount() { 
      return imageArray.length; 
     } 

     public Object instantiateItem(View collection, int position) { 
      int fff=PageIndicatorActivity.myPager.getCurrentItem(); 
      Toast.makeText(activity, String.valueOf(fff), 5000).show(); 

      ScrollView view = new ScrollView(activity); 


      RelativeLayout container = new RelativeLayout(activity); 

      image = new ImageView (activity); 
      image2=new ImageView(activity); 
      image.setId(1); 


      // Parameters 
      LayoutParams container_params = new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT); 
      LayoutParams content_params = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); 
      RelativeLayout.LayoutParams contents_paramw = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT); 
      contents_paramw.addRule(RelativeLayout.BELOW, image.getId()); 


      view.setLayoutParams(container_params); 

      container.setLayoutParams(container_params); 

      image.setLayoutParams(content_params); 
      image2.setLayoutParams(contents_paramw); 

      image2.setImageResource(R.drawable.aya3); 
      image.setImageResource(R.drawable.aya2); 
      // i.setim(imageArray[position]); 



     /* ImageView vv=(ImageView)collection.findViewById(R.id.imageView1); 
     vv.setImageResource(R.drawable.aya2); 
      TextView view = new TextView(activity); 
      view.setTextIsSelectable(true); 
      view.setTextSize(30); 
      view.setTextColor(Color.BLUE); 

      view.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, 
        LayoutParams.FILL_PARENT)); 
      //view.setScaleType(ScaleType.FIT_XY); 
      view.setText(imageArray[position]); 
      ((ViewPager) collection).addView(view, 0); 
      */ 
      container.addView(image); 

      container.addView(image2); 
      view.addView(container); 

      image.setOnClickListener(new OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        int location[] = new int[2]; 
//Here is the problem 
        image.setBackgroundColor(Color.RED); 
//======================================================= 
        image.setTag("1"); 
        image.getLocationOnScreen(location); 
        p = new Point(); 
        p.x = location[0]-600; 
        p.y = location[1]+30; 
        // Toast.makeText(activity, String.valueOf(location[0]), 5000).show(); 
        // Toast.makeText(activity, String.valueOf(location[1]), 5000).show(); 
        showPopup(activity, p); 

       notifyDataSetChanged(); 
       } 
      }); 
      image2.setOnClickListener(new OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        int location[] = new int[2]; 

    //Here is the problem 
        image2.setBackgroundColor(Color.RED); 
//======================================================= 
        image.getLocationOnScreen(location); 
        p = new Point(); 
        p.x = location[0]-600; 
        p.y = location[1]+100; 
       // Toast.makeText(activity, String.valueOf(location[0]), 5000).show(); 
        //Toast.makeText(activity, String.valueOf(location[1]), 5000).show(); 
        showPopup(activity, p); 


        notifyDataSetChanged(); 
       } 
      }); 
      //container.addView(text); 
      //container.addView(image); 
      ((ViewPager) collection).addView(view,0); 


      return view; 
     } 


     @Override 
     public void destroyItem(View arg0, int arg1, Object arg2) { 
      //Toast.makeText(activity.getApplicationContext(), String.valueOf(arg1), 5000).show(); 
      ((ViewPager) arg0).removeView((ScrollView) arg2); 
     } 

     @Override 
     public boolean isViewFromObject(View arg0, Object arg1) { 

      return arg0 == ((ScrollView) arg1); 
     } 

     @Override 
     public Parcelable saveState() { 
      return null; 
     } 


     @Override 
     public void notifyDataSetChanged() { 
      // TODO Auto-generated method stub 
      super.notifyDataSetChanged(); 
      if (this.mObserver != null) 
        this.mObserver.onDataSetChanged(); 
       } 

     @Override 
     public void startUpdate(ViewGroup container) { 
      // TODO Auto-generated method stub 
      super.startUpdate(container); 
     } 



     static abstract interface DataSetObserver 
      { 
      public abstract void onDataSetChanged(); 
      } 


     private void showPopup(final Activity context, Point p) { 
       int popupWidth = 560; 
       int popupHeight = 80; 

       // Inflate the popup_layout.xml 
       LinearLayout viewGroup = (LinearLayout) context.findViewById(R.id.popup); 
       LayoutInflater layoutInflater = (LayoutInflater) context 
       .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
       View layout = layoutInflater.inflate(R.layout.popup_layout, viewGroup); 

       // Creating the PopupWindow 
       final PopupWindow popup = new PopupWindow(context); 
       popup.setContentView(layout); 
       popup.setWidth(popupWidth); 
       popup.setHeight(popupHeight); 
       popup.setFocusable(true); 

       // Some offset to align the popup a bit to the right, and a bit down, relative to button's position. 
       int OFFSET_X = 30; 
       int OFFSET_Y = 30; 

       // Clear the default translucent background 
       popup.setBackgroundDrawable(new BitmapDrawable()); 

       // Displaying the popup at the specified location, + offsets. 
       popup.showAtLocation(layout, Gravity.NO_GRAVITY, p.x + OFFSET_X, p.y + OFFSET_Y); 

       // Getting a reference to Close button, and close the popup when clicked. 
       ImageButton close = (ImageButton) layout.findViewById(R.id.tashgheel); 
       close.setOnClickListener(new OnClickListener() { 

       @Override 
       public void onClick(View v) { 
        popup.dismiss(); 
       } 
       }); 
      } 
    } 

Надеется, что вы, ребята, помогите мне решить эту проблему.

+0

Вы получаете ответ? если да, то отметьте ответ. Один из них сказал, что мой ответ неверен. –

ответ

2

Попробуйте этот код, он отлично работает,

final ImageView image = new ImageView (activity); 
final ImageView image2=new ImageView(activity); 

на внутренней стороне instantiateItem(View collection, int position), потому что вы используете каждую страницу на вид пейджера имеет те же изображения, поэтому результат должен сосредоточиться на последней инициированной странице.

+1

Это будет работать точно. – flexdroid

+0

, но это не способ сделать это. – flexdroid

+0

Это прекрасно работает, я пробовал. –

1

@ Sino Raj это неправильный способ сделать это, даже если он работает.

Попробуйте Объявить ImageView изображение, IMAGE2 локально внутри instantiateItem метода и внутри setOnClickListener изменить линию image.setBackgroundColor(Color.RED) к v.setBackgroundColor(Color.RED)

+0

Это прекрасно работает, я пробовал. –

+1

Отличный ответ .... +1 – Triode

 Смежные вопросы

  • Нет связанных вопросов^_^