0

我正在使用轮播视图。使用一种布局,我放了四张图片。我想将每个图像设置为每个对象,因为我想在单击每个图像时设置不同的方法。

    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);

我试过像下面的代码一样..但肯定会出错..

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

我不知道我的问题是否清楚..但是如果您回复一些更清楚的内容,我会解释它!

这是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);
}

}

片段代码 public class 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;
    }

谢谢!

4

2 回答 2

0

你的问题有点含糊,但我会尽我所能做出回应——如果我有什么误解,请随时告诉我,我会相应地编辑我的答案。

由于“carousel”不是 android SDK 的一部分,因此很难确定您需要做什么(如果您展示了用于此 carousel 的类/库,这将有所帮助)。但是,它可能会在实现中使用此类或其子类:AbsListView

每个基于列表视图的类都有一些在单击项目时调用的方法(这里是 performItemClick)。当它被调用时,它会依次调用关联的 AdapterView 的 onItemClick方法。适配器是您(或您正在使用的库)创建、填充要显示的数据并附加到 ListView 的东西。

通过注册 AdapterView.OnClickListener,您可以指定单击任何给定索引处的列表项将导致什么行为。

如果没有有关您的轮播的更多详细信息,我将无法提供更多特定于代码的帮助。但是,如果您发布更多信息,我很乐意更新我的答案!

于 2013-06-14T20:24:41.927 回答
0

ImageButton 是一个类,您创建了一个名为“product_photo”的对象。然后你创建另一个叫做“一个”。问题是您试图为一个方法分配一个方法,而不是创建一个新的 ImageButton。相反,你应该有

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

'one' 是否需要成为您使用 findViewById 获得的布局中的某些内容(很可能您会这样做)取决于您的应用程序。

于 2013-06-14T20:25:28.210 回答