2014-02-24 63 views
0

我在我的應用程序中做了一個ImageAdapter,我希望點擊textview下方的圖像是隱藏的。但setInvisibility不起作用。 El問題與信息無關。是否有一個享有一個問題...我需要幫助,請Android:onclick不工作

XML

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" > 

<imagenes.TouchImageView 
    android:id="@+id/imgDisplay" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:scaleType="fitCenter" /> 

<TextView 
    android:id="@+id/textoInfoImagen" 
    android:layout_alignParentBottom="true" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:gravity="center_horizontal" 
    android:background="@color/grisTransparente" 
    android:paddingTop="3dp" 
    android:paddingBottom="3dp" 
    android:text="" 
    android:textSize="13sp" 
    android:textColor="@color/gris"/> 

</RelativeLayout> 

JAVA

public class FullScreenImageAdapter extends PagerAdapter implements OnClickListener { 

private Activity _activity; 
private LayoutInflater inflater; 
Context context; 

String[] listaImagenes; 
String monumento; 

TouchImageView imgDisplay; 
TextView info; 

boolean invisible = false; 

public FullScreenImageAdapter(Activity activity, Context context, String monumento) throws IOException { 
    this._activity = activity; 
    this.context = context; 
    this.monumento = monumento; 
    listaImagenes = context.getAssets().list(this.monumento); 
} 

@Override 
public int getCount() { 
    return listaImagenes.length; 
} 

@Override 
public boolean isViewFromObject(View view, Object object) { 
    return view == ((RelativeLayout) object); 
} 

@Override 
public Object instantiateItem(ViewGroup container, int position) { 

    inflater = (LayoutInflater) _activity 
      .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    final View viewLayout = inflater.inflate(R.layout.ampliar_imagen, container, 
      false); 

    imgDisplay = (TouchImageView) viewLayout.findViewById(R.id.imgDisplay); 
    imgDisplay.setMaxZoom(4); 

    Bitmap bitmap = cargarImagen(monumento, position); 
    imgDisplay.setImageBitmap(bitmap); 

    info = (TextView) viewLayout.findViewById(R.id.textoInfoImagen); 
    info.setText((position + 1) + " de " + listaImagenes.length + 
      "\n" + InfoImagenes.devolverInfoImagenes(monumento, position)); 

    imgDisplay.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 

      Toast.makeText(context, "click", Toast.LENGTH_SHORT).show(); 
      if(invisible == true) { 
       invisible = false; 
       info.setVisibility(View.VISIBLE); 
      } else { 
       invisible = true; 
       info.setVisibility(View.INVISIBLE); 
      } 
     } 
    }); 

    ((ViewPager) container).addView(viewLayout); 

    return viewLayout; 
} 

@Override 
public void destroyItem(ViewGroup container, int position, Object object) { 
    ((ViewPager) container).removeView((RelativeLayout) object); 

} 

public Bitmap cargarImagen(String monumento, int position) { 

    Bitmap bitmap = null; 
    InputStream is; 

    try { 
     BitmapFactory.Options options = new BitmapFactory.Options(); 
     options.inPreferredConfig = Bitmap.Config.ARGB_8888; 

      is = context.getAssets().open(monumento + "/" + listaImagenes[position]); 
      bitmap = BitmapFactory.decodeStream(is, null, options); 

    } catch (IOException e) { 

    } 

    return bitmap; 
} 

@Override 
public void onClick(View v) { 
} 

} 
+1

,你在哪裏設置單擊監聽? – Raghunandan

+0

在xml中設置onclick,這樣你就可以在你的代碼中使用onClick方法 – KOTIOS

+0

問題是onclick不工作 – Charlie

回答

0

info是您的適配器的成員變量,不一定被點擊的相同視圖 - 您將覆蓋每個項目的變量。

onClick()自帶View v參數,該參數是被點擊的視圖 - 請致電setVisibility()

另外,invisible是具有與上述相同的問題的成員變量。如果您想檢查您的視圖的當前視野,請致電v.getVisibility()

+0

你可以把代碼? – Charlie

+0

有什麼解決辦法嗎? – Charlie

0

使用ImageView的(imgDisplay)輸入的.java類作爲ImageView而不是TouchImageView