问题描述:

I have a GalleryView with some pictures , and I would like to have a TextView that changes with the pictures. Can anyone tell how to add description within each image.I'm new in android.

Any help or guide

This is my code:

Xml:

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

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

android:orientation="vertical"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

>

<Gallery

android:id="@+id/Gallery01"

android:layout_width="fill_parent"

android:layout_height="wrap_content"></Gallery>

<ImageView

android:id="@+id/ImageView01"

android:layout_width="wrap_content"

android:layout_height="wrap_content"></ImageView>

</LinearLayout>

java :

import android.app.Activity;

import android.content.Context;

import android.content.res.TypedArray;

import android.os.Bundle;

import android.view.View;

import android.view.ViewGroup;

import android.widget.AdapterView;

import android.widget.BaseAdapter;

import android.widget.Gallery;

import android.widget.ImageView;

import android.widget.Toast;

import android.widget.AdapterView.OnItemClickListener;

public class GalleryView extends Activity {

Integer[] pics = {

R.drawable.antartica1,

R.drawable.antartica2,

R.drawable.antartica3,

R.drawable.antartica4,

R.drawable.antartica5,

R.drawable.antartica6,

R.drawable.antartica7,

R.drawable.antartica8,

R.drawable.antartica9,

R.drawable.antartica10

};

ImageView imageView;

/** Called when the activity is first created. */

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

Gallery ga = (Gallery)findViewById(R.id.Gallery01);

ga.setAdapter(new ImageAdapter(this));

imageView = (ImageView)findViewById(R.id.ImageView01);

ga.setOnItemClickListener(new OnItemClickListener() {

public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,

long arg3) {

Toast.makeText(getBaseContext(),

"You have selected picture " + (arg2+1) + " of Antartica",

Toast.LENGTH_SHORT).show();

imageView.setImageResource(pics[arg2]);

}

});

}

public class ImageAdapter extends BaseAdapter {

private Context ctx;

int imageBackground;

public ImageAdapter(Context c) {

ctx = c;

TypedArray ta = obtainStyledAttributes(R.styleable.Gallery1);

imageBackground = ta.getResourceId(R.styleable.Gallery1_android_galleryItemBackground, 1);

ta.recycle();

}

public int getCount() {

return pics.length;

}

public Object getItem(int arg0) {

return arg0;

}

public long getItemId(int arg0) {

return arg0;

}

public View getView(int arg0, View arg1, ViewGroup arg2) {

ImageView iv = new ImageView(ctx);

iv.setImageResource(pics[arg0]);

iv.setScaleType(ImageView.ScaleType.FIT_XY);

iv.setLayoutParams(new Gallery.LayoutParams(150,120));

iv.setBackgroundResource(imageBackground);

return iv;

}

}

}

网友答案:

If you want a TextView that changes its text when an image in selected in Gallery. This TextView will be outside the Galllery, and you will change its content when a gallery item is selected. Code below may give you a hint.

XML:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>

<Gallery 
android:id="@+id/Gallery01" 
android:layout_width="fill_parent" 
android:layout_height="wrap_content"></Gallery>
<ImageView 
android:id="@+id/ImageView01" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content"></ImageView>

<TextView 
android:id="@+id/TextView01" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content"
android:layout_below="@+id/ImageView01"></TextView >


</LinearLayout>

In your java code you have to set an onIteSelectedListener() which will update the TextView :

1) Initialize the TextView:

 TextView textView = (TextView)findViewById(R.id.TextView01);

2) Set the onitemSelectedListener() of Gallery:

    ga.setOnItemClickListener(galleryOnItemSelectedListener);

3) your OnItemSelectedListener() would be like:

OnItemSelectedListener galleryOnItemSelectedListener = new OnItemSelectedListener() {

    @Override
    public void onItemSelected(AdapterView<?> arg0, View view, int position,
            long arg3) {
            // update the TextView here depending on the position of item selected
            // from a description array or tag value from view.
            // i.e texteView.setText(descriptions[position]);

    }

    @Override
    public void onNothingSelected(AdapterView<?> arg0) {
        // TODO Auto-generated method stub

    }
};
相关阅读:
Top