2013-12-09 27 views
0

我試圖創建一個Android應用程序,這將通過以下方式工作:的Android viewpager加imageview的

我有裝有10個圖像的ViewPager項:這是沒有問題的。

現在,當我點擊ViewPager中顯示的圖像時,我必須將其顯示在ViewPager下方的Im​​ageView字段中。

如何實現將圖像從ViewPager複製到ImageView的方法?

這裏是我的代碼:

SecondActivity.java

package com.example.logger; 

import android.os.Bundle; 
import android.annotation.SuppressLint; 
import android.app.Activity; 
import android.app.Fragment; 
import android.app.FragmentManager; 
import android.support.v4.app.FragmentStatePagerAdapter; 
import android.support.v4.view.PagerAdapter; 
import android.support.v4.view.ViewPager; 
import android.view.LayoutInflater; 
import android.view.Menu; 
import android.view.View; 
import android.widget.ImageView; 
import android.view.ViewGroup; 

public class SecondActivity extends Activity { 

    private static final int NUM_PAGES = 10; 

    private ViewPager mpager; 

    private MyPagerAdapter mPagerAdapter; 
    private int [] pics = {R.drawable.android_interfaz_layout_estructura_final, R.drawable.baixa, R.drawable.baixada, R.drawable.greenprogressbar, 
      R.drawable.layout_keyboard, R.drawable.linerlay, R.drawable.merge1, R.drawable.o2zds, R.drawable.regbd, 
      R.drawable.s7qrs}; 

    @SuppressLint("NewApi") 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_second); 
     mPagerAdapter = new MyPagerAdapter(); 
     mpager = (ViewPager) findViewById(R.id.viewer); 
     mpager.setAdapter (mPagerAdapter); 
    } 

    private class MyPagerAdapter extends PagerAdapter 
    { 

     @Override 
     public int getCount() { 
      // TODO Auto-generated method stub 
      return pics.length; 
     } 

     @Override 
     public boolean isViewFromObject(View arg0, Object arg1) { 
      // TODO Auto-generated method stub 
      return false; 
     } 

     @Override 
     public Object instantiateItem(View collection, int position) { 
      ImageView view = new ImageView (SecondActivity.this); 
      view.setImageResource (pics[position]); 
      ((ViewPager) collection).addView(view, 0); 
      return view; 
     } 

     } 


    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.second, menu); 
     return true; 
    } 

    public void onClick (View v) 
    { 
     // TODO Auto-generated method stub 
     //aquí anirà la funció per traslladar la image de la gallery a la pantalla 
     mpager.setVisibility(View.VISIBLE); 
     mpager.setCurrentItem(v.getId()); 

    } 

     } 

末的.java

這裏是我的佈局,以及:

activity_second.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    tools:context=".SecondActivity" > 


    <android.support.v4.view.ViewPager 
     android:padding="16dp" 
     android:id="@+id/viewer" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_marginTop="10dp" 
     android:layout_weight="0.70" 
     /> 

    <ImageView 

     android:id="@+id/big_image" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_marginTop="10dp" 
     android:layout_below="viewer" 
     android:layout_weight="0.30" 

     /> 

</RelativeLayout> 

末的.xml

我會很感激,如果你能幫助我。

此致敬禮

毛羅。

回答

1

你可以有功能的活動稱爲showImage如下:

public void showImage (int position,View view){ 
    //View is your view that you returned from instantiateItem and position is it's postion in array you can get the image resource id using this position ans set it to the ImageView 
} 

而且在適配器:

private class MyPagerAdapter extends PagerAdapter { 

    <YourActivityClass> activity; 
    public MyPagerAdapter(<YourActivityClass> activity){ 
     this.activity=activity; 
    } 
    public Object instantiateItem(View collection, int position) { 
     //return a view for view pager 
    } 

    @Override 
public void setPrimaryItem(ViewGroup container, int position, 
       Object object) { 
    // TODO Auto-generated method stub 
     super.setPrimaryItem(container, position, object); 
     activity.showImage(position,(View)object); 
} 

} 
0

您可以持有對您在instantiateItem中設置的當前繪圖的引用,並在單擊該項目時將其設置爲您的大圖。

1

您可以使用標籤爲把附加信息的視圖。

@Override 
public Object instantiateItem(View collection, int position) { 
    ImageView view = new ImageView (SecondActivity.this); 
    view.setImageResource (pics[position]); 
    ((ViewPager) collection).addView(view, 0); 

    //I use Integer, but you can use any object. 
    view.setTag (Integer.valueOf(pics[position])); 
    view.setOnClickListener(mPageClickListener); 
    return view; 
} 

//ViewPaged don't have itemClickListener. 
//You should use own OnClickListener for every created View. 
private OnClickListener mPageClickListener = new OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     //Getting tag from view. 
     Integer picId = (Integer) v.getTag(); 
     // ... 
    } 
};