2013-06-14 3 views
0

Я работаю с видом на карусель. С одним макетом я поставил четыре изображения. И я хочу установить каждое изображение как каждый объект, потому что я хочу установить другой метод при каждом щелчке изображения.Как установить Imageview как объект?

ImageButton product_photo = (ImageButton) l.findViewById(R.id.myoffer_image); 

    product_photo.setImageResource(R.drawable.myoffers_0); 

    product_photo.setImageResource(R.drawable.myoffers_1); 

    product_photo.setImageResource(R.drawable.myoffers_2); 

    product_photo.setImageResource(R.drawable.myoffers_3); 

Я попытался как код below..but наверняка он делает ошибку ..

ImageButton one = product_photo.setImageResource(R.drawable.myoffers_0); 

Я не знаю, если мой вопрос clear..but если вы ответите что-то, чтобы узнать больше ясно, я объясню это!

Здесь находится класс pageadapter!

public class Myoffers_PagerAdapter extends FragmentPagerAdapter implements 
    ViewPager.OnPageChangeListener { 

private Myoffers_LinearLayout cur = null; 
private Myoffers_LinearLayout next = null; 
private Myoffers context; 
private FragmentManager fm; 
private float scale; 

public Myoffers_PagerAdapter(Myoffers context, FragmentManager fm) { 
    super(fm); 
    this.fm = fm; 
    this.context = context; 
} 

@Override 
public Fragment getItem(int position) 
{ 
    // make the first pager bigger than others 
    if (position == Myoffers.FIRST_PAGE) 
     scale = Myoffers.BIG_SCALE;   
    else 
     scale = Myoffers.SMALL_SCALE; 

    position = position % Myoffers.PAGES; 
    return Myoffers_Fragment.newInstance(context, position, scale); 
} 

@Override 
public int getCount() 
{  
    return Myoffers.PAGES * Myoffers.LOOPS; 
} 

//@Override 
public void onPageScrolled(int position, float positionOffset, 
     int positionOffsetPixels) 
{ 
    if (positionOffset >= 0f && positionOffset <= 1f) 
    { 
     cur = getRootView(position); 
     next = getRootView(position +1); 

     cur.setScaleBoth(Myoffers.BIG_SCALE 
       - Myoffers.DIFF_SCALE * positionOffset); 
     next.setScaleBoth(Myoffers.SMALL_SCALE 
       + Myoffers.DIFF_SCALE * positionOffset); 
    } 
} 

//@Override 
public void onPageSelected(int position) {} 

//@Override 
public void onPageScrollStateChanged(int state) {} 

private Myoffers_LinearLayout getRootView(int position) 
{ 
    return (Myoffers_LinearLayout) 
      fm.findFragmentByTag(this.getFragmentTag(position)) 
      .getView().findViewById(R.id.root); 
} 

private String getFragmentTag(int position) 
{ 
    return "android:switcher:" + context.pager.getId() + ":" + position; 
} 

}

Основной класс!

public class Myoffers extends FragmentActivity { 
public final static int PAGES = 4; 
public final static int LOOPS = 1000; 
public final static int FIRST_PAGE = PAGES * LOOPS/2; 
public final static float BIG_SCALE = 1.0f; 
public final static float SMALL_SCALE = 0.5f; 
public final static float DIFF_SCALE = BIG_SCALE - SMALL_SCALE; 

public Myoffers_PagerAdapter adapter; 
public ViewPager pager; 

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.myoffers); 

    pager = (ViewPager) findViewById(R.id.myviewpager); 

    adapter = new Myoffers_PagerAdapter(this, this.getSupportFragmentManager()); 
    pager.setAdapter(adapter); 
    pager.setOnPageChangeListener(adapter); 

    pager.setCurrentItem(FIRST_PAGE); 

    pager.setOffscreenPageLimit(3); 

    pager.setPageMargin(-100); 
} 

}

Фрагмент кода общественного класса Myoffers_Fragment расширяет фрагмент {

protected static final String TAG = "Philips"; 
FileOutputStream mOutputStream; 
private String id; 

public static Fragment newInstance(Myoffers context, int pos, float scale) 
{ 
    Bundle b = new Bundle(); 
    b.putInt("pos", pos); 
    b.putFloat("scale", scale); 

    return Fragment.instantiate(context, Myoffers_Fragment.class.getName(), b); 
} 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    if (container == null) { 
     return null; 
    } 

    LinearLayout l = (LinearLayout) inflater.inflate(R.layout.mf, container, false); 

    int pos = this.getArguments().getInt("pos"); 
    TextView tv = (TextView) l.findViewById(R.id.text); 
    tv.setText("Product " + pos); 


    /* 
    * Put images with Hard-Coding 
    */ 
    { 
    ImageButton product_photo = (ImageButton) l.findViewById(R.id.myoffer_image); 

    product_photo.setImageResource(R.drawable.myoffers_0); 

    product_photo.setImageResource(R.drawable.myoffers_1); 

    product_photo.setImageResource(R.drawable.myoffers_2); 

    product_photo.setImageResource(R.drawable.myoffers_3); 

    } 


    Myoffers_LinearLayout root = (Myoffers_LinearLayout) l.findViewById(R.id.root); 
    float scale = this.getArguments().getFloat("scale"); 
    root.setScaleBoth(scale); 

    return l; 
    } 

спасибо!

ответ

0

Ваш вопрос немного расплывчатый, но я отвечу на все, что в моих силах - если я что-то не понимаю, не стесняйтесь, дайте мне знать, и я отредактирую свой ответ соответственно.

Поскольку «карусель» не является частью SDK Android, немного сложно быть уверенным, что вам нужно сделать (это поможет, если вы продемонстрируете, какой класс/библиотеку вы используете для этой карусели). Тем не менее, есть вероятность, что он будет использовать этот класс или его подкласс в реализации: AbsListView

Каждый класс на основе списка имеет некоторый метод, который вызывается при щелчке элемента (здесь выполняется функция performItemClick). Когда он вызывается, он, в свою очередь, вызывает метод onItemClick связанного с ним AdapterView. Адаптер - это то, что вы (или используемая вами библиотека) создали, заполнили ваши данные для отображения и привязаны к ListView.

Зарегистрировав AdapterView.OnClickListener, вы можете указать, какое поведение вызывает клик по элементу списка в любом заданном индексе.

Без дополнительной информации о вашей карусели, я не могу предоставить более подробную информацию по конкретному коду. Однако, если вы разместите больше информации, я был бы рад обновить свой ответ!

+0

Действительно оцените ваш ответ !!!! На самом деле, я знаю, что моя информация полна недостатка. Но я не мог опубликовать весь свой код, связанный с карусели здесь ... вот почему ... У меня есть три класса относительно вида карусели, которые являются основными, pageadapter, linearlayout и фрагментом. –

+0

Я редактировал вопрос с помощью pageadapter! –

+0

добавлен главный класс тоже! –

0

ImageButton - это класс, и вы создали объект такого типа, называемый «product_photo». Затем вы создаете еще один «один». Проблема в том, что вы пытались назначить метод одному, а не создавать новый ImageButton. Вместо этого вы должны иметь

ImageButton one = new ImageButton(); 
one.setImageResource(R.drawable.myoffers_0); 

или нет «один» должен быть что-то в макете, который вы получаете с findViewById или нет (вероятно, вы) до вашего приложения.

+0

возникает ошибка .. он говорит: «ImageButton() не определен». –

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