2011-08-14 1 views
0

J'ai une mise en page avec ImageSwitcher, une galerie de thumnail et une TextSwitcher. Je voudrais que le TextSwitcher mette à jour le texte en fonction de la miniature sélectionnée. Je l'ai essayé d'utiliser un baseadapter mettre à jour le TextSwitcher de manière similaire à la façon dont l'ImageSwitcher met à jour les images dans le ImageView, mais je suis en cours d'exécution dans un mur ici. Toute aide serait très appréciée! Je vous remercie!SetText dans TextSwitcher en utilisant BaseAdapter

JAVA:

import android.app.Activity; 
import android.content.Context; 
import android.os.Bundle; 
import android.view.Gravity; 
import android.view.View; 
import android.view.ViewGroup; 
import android.view.Window; 
import android.view.animation.AnimationUtils; 
import android.widget.AdapterView; 
import android.widget.BaseAdapter; 
import android.widget.Gallery; 
import android.widget.ImageSwitcher; 
import android.widget.ImageView; 
import android.widget.TextSwitcher; 
import android.widget.TextView; 
import android.widget.ViewSwitcher; 
import android.widget.Gallery.LayoutParams; 


public class ImageSwitch1 extends Activity implements 
     AdapterView.OnItemSelectedListener, ViewSwitcher.ViewFactory { 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     requestWindowFeature(Window.FEATURE_NO_TITLE); 

     setContentView(R.layout.imageswitcher); 

     TextSwitcher mTextSwitcher = (TextSwitcher) findViewById(R.id.textSwitcher1); 
     mSwitcher = (ImageSwitcher) findViewById(R.id.switcher); 
     mSwitcher.setFactory(this); 
     mSwitcher.setInAnimation(AnimationUtils.loadAnimation(this, 
       android.R.anim.fade_in)); 
     mSwitcher.setOutAnimation(AnimationUtils.loadAnimation(this, 
       android.R.anim.fade_out)); 


     mTextSwitcher.setFactory(this); 
     mTextSwitcher.setInAnimation(AnimationUtils.loadAnimation(this, 
       android.R.anim.fade_in)); 
     mTextSwitcher.setOutAnimation(AnimationUtils.loadAnimation(this, 
       android.R.anim.fade_out)); 

     Gallery g = (Gallery) findViewById(R.id.gallery); 
     g.setAdapter(new ImageAdapter(this)); 
     g.setOnItemSelectedListener(this); 


    } 

    public void onNothingSelected(AdapterView parent) { 
    } 

    public View makeView() { 
     ImageView i = new ImageView(this); 
     i.setBackgroundColor(0xFF000000); 
     i.setScaleType(ImageView.ScaleType.FIT_CENTER); 
     i.setLayoutParams(new ImageSwitcher.LayoutParams(LayoutParams.MATCH_PARENT, 
       LayoutParams.MATCH_PARENT)); 

     return i; 
    } 

    private TextSwitcher mTextSwitcher; 
    public class TextAdapter extends BaseAdapter{ 
     public TextAdapter(Context c){ 
      mContext = c; 
     } 
    public int getCount(){ 
     return mThumbIds.length; 
    } 
    public Object getItem(int position){ 
     return position; 
    } 
    public long getItemId(int position){ 
     return position; 
    } 
    public View getView(int position, View convertView, ViewGroup parent){ 

     TextView t = new TextView(mContext); 
     t.setText(mText[position]); 
     t.setGravity(Gravity.TOP | Gravity.CENTER_HORIZONTAL); 
     t.setTextSize(36); 
      return t; 
     } 
    private Context mContext; 
    }  


    private ImageSwitcher mSwitcher; 

    public class ImageAdapter extends BaseAdapter { 
     public ImageAdapter(Context c) { 
      mContext = c; 
     } 

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

     public Object getItem(int position) { 
      return position; 
     } 

     public long getItemId(int position) { 
      return position; 
     } 

     public View getView(int position, View convertView, ViewGroup parent) { 
      ImageView i = new ImageView(mContext); 

      i.setImageResource(mThumbIds[position]); 
      i.setAdjustViewBounds(true); 
      i.setLayoutParams(new Gallery.LayoutParams(
        LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); 
      i.setBackgroundResource(R.drawable.picture_frame); 


      return i; 



     } 

     private Context mContext; 



    } 

    public void onItemSelected(AdapterView parent, View v, int position, long id) { 
     mSwitcher.setImageResource(mImageIds[position]); 
     mTextSwitcher.setText(mThumbIds[position]); 
    } 





    private Integer[] mThumbIds = { 
      R.drawable.image1_thumb, R.drawable.image2_thumb, R.drawable.image3_thumb, 
      R.drawable.image4_thumb, R.drawable.image5_thumb}; 

    private Integer[] mImageIds = { 
      R.drawable.image1, R.drawable.image2, R.drawable.image3, 
      R.drawable.image4, R.drawable.image5}; 

    private Integer[] mText = { 
     R.string.item1, R.string.item2, R.string.item3, R.string.item4, R.string.item5 
    }; 


} 

XML:

<?xml version="1.0" encoding="utf-8"?> 


    <FrameLayout android:id="@+id/FrameLayout1" android:layout_height="match_parent" xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"> 

     <ImageSwitcher android:id="@+id/switcher" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      > 
     </ImageSwitcher> 

     <Gallery android:id="@+id/gallery" 
      android:background="#55000000" 
      android:layout_width="match_parent" 
      android:gravity="center_vertical" 
      android:spacing="16dp" android:unselectedAlpha="0.5" android:layout_height="80dp" /> 
     <TextSwitcher android:layout_width="match_parent" android:id="@+id/textSwitcher1" android:layout_height="wrap_content"></TextSwitcher> 

    </FrameLayout> 

Répondre

0

Vous devriez passer un chaîne à mTextSwitcher.setText(mThumbIds[position]);
changer la place à mTextSwitcher.setText(getText(mText[position]));

+0

merci pour votre aide, qui fait sens. Je suis confronté à un plus gros problème avec ce projet en ce que le changeur de scripts jette une exception argument illégale .... question différente si – benbeel

+0

J'ai trouvé la vraie erreur dans mon code, avec votre indice, je pouvais le faire fonctionner. Avoir à déclarer la vue de texte à l'intérieur de la méthode onitemselected. – benbeel

Questions connexes