Android gallery实现二级联动效果

某些情况下需要实现两个gallery控件的二级联动效果

代码实现

package com.w.galler.text;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Adapter;
import android.widget.AdapterView;
import android.widget.Gallery;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.TextView;
import android.widget.Toast;

/*
 * gallery两级联动
 */
public class MainActivity extends Activity implements
		AdapterView.OnItemSelectedListener {
	private Gallery newsImageGallery;// 重点新闻图片gallery
	private Gallery selectItemGallery;// 选中图片gallery
	private ImageGalleryAdapter imageGalleryAdapter;
	private ImageAutoAdapter selectImageAdapter;
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		int[] m = returnInt(5);
		String[] category = { "0", "1", "2", "2", "3" };
		
		imageGalleryAdapter = new ImageGalleryAdapter(this, category);
		newsImageGallery = new Gallery(MainActivity.this);
		newsImageGallery.setAdapter(imageGalleryAdapter);

		newsImageGallery.setSpacing(0);
		int aid = (int) imageGalleryAdapter.getItemId(0);
		selectImageAdapter = new ImageAutoAdapter(this, aid, m);
		selectItemGallery = new Gallery(MainActivity.this);
		selectItemGallery.setAdapter(selectImageAdapter);
		// 处理newsImageGallery的点击事件,点击后打开对话框
		newsImageGallery
				.setOnItemClickListener(new AdapterView.OnItemClickListener() {

					@Override
					public void onItemClick(AdapterView<?> arg0, View arg1,
							int arg2, long arg3) {
						
						// imageGalleryAdapter=(ImageGalleryAdapter)
						// arg0.getAdapter();
						// String
						// category=imageGalleryAdapter.getCategory(arg2);
						String category = ((ImageGalleryAdapter) arg0
								.getAdapter()).getCategory(arg2);
						switch (Integer.parseInt(category)) {
						// 文本新闻类型
						case 0:
							Toast.makeText(MainActivity.this,"0", Toast.LENGTH_SHORT).show();
							break;
					    //图片新闻类型
						case 1:Toast.makeText(MainActivity.this,"1", Toast.LENGTH_SHORT).show();
							break;
					   //视频新闻类型
						case 2:Toast.makeText(MainActivity.this,"2", Toast.LENGTH_SHORT).show();
							break;
						//URL式新闻类型
						case 3:Toast.makeText(MainActivity.this,"3", Toast.LENGTH_SHORT).show();
							break;

						}


						// new AlertDialog.Builder(MainActivity.this).setTitle(
						// "打开外部连接").setMessage("确定退出当前应用程序,打开新的程序")
						// .setIcon(R.drawable.pic_icon_menu)
						// .setPositiveButton("确定",
						// new DialogInterface.OnClickListener() {
						//
						// @Override
						// public void onClick(
						// DialogInterface dialog,
						// int which) {
						// }
						//
						// }).setNegativeButton("取消",
						// new DialogInterface.OnClickListener() {
						//
						// @Override
						// public void onClick(
						// DialogInterface dialog,
						// int which) {
						//
						// }
						//
						//						

					}

				});

		ListView ls = (ListView) findViewById(R.id.listview);
		ls.addHeaderView(newsImageGallery, null, true);
		ls.addHeaderView(selectItemGallery);
		SimpleAdapter adapter = new SimpleAdapter(MainActivity.this, getData(),
				R.layout.newa, new String[] { "title", "img" }, new int[] {
						R.id.image, R.id.text });
		ls.setAdapter(adapter);

		newsImageGallery.setOnItemSelectedListener(this);
		selectItemGallery.setOnItemSelectedListener(this);

	}

	private List<Map<String, Object>> getData() {
		List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
		for (int i = 0; i < 200; i++) {
			Map<String, Object> map = new HashMap<String, Object>();
			map.put("title", "g2-----------" + i);
			map.put("img", R.drawable.a2);
			list.add(map);
		}
		return list;
	}

	// 返回要滚动的条目数
	private int[] returnInt(int len) {
		int[] m = new int[len];
		for (int i = 0; i < len; i++) {
			m[i] = R.drawable.list_commend_icon_0;
		}
		return m;
	}
	//返回图片url数组
	@Override
	public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2,
			long arg3) {
		int aid = (int) imageGalleryAdapter.getItemId(arg2);
		selectImageAdapter.notifyDataSetChanged(aid);

	}

	@Override
	public void onNothingSelected(AdapterView<?> arg0) {

	}
}

 

package com.w.galler.text;

import java.util.HashMap;
import java.util.Map;

import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.drawable.BitmapDrawable;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;

public class ImageGalleryAdapter extends BaseAdapter {
	private Context mContext;
	private String[] category;// 新闻的类型

	public ImageGalleryAdapter(Context c, String[] category) {
		this.mContext = c;
		this.category = category;

	}

	private String[] sm = new String[] {
			"http://img.gougou.com/movie_pic/c76b3682f55aff6497027f6a44e12b9e.jpg",
			"http://img.gougou.com/movie_pic/9b0eafd0c55983b06d96585ba8bb2583.jpg",
			"http://img.gougou.com/movie_pic/c5c2f134cc14c44dd069967f351c9060.jpg",
			"http://img.gougou.com/movie_pic/e68140c4661f466cc5ac40cd08506a9e.jpg",
			"http://img.gougou.com/movie_pic/9b0eafd0c55983b06d96585ba8bb2583.jpg"

	};

	@Override
	public int getCount() {

		return sm.length;
	}

	@Override
	public Object getItem(int position) {

		return position;
	}

	@Override
	public long getItemId(int position) {

		return position;
	}

	public String getCategory(int position) {
		return category[position];
	}

	@Override
	public View getView(int position, View convertView, ViewGroup parent) {
		Bitmap bitmap = null;
		try {
			bitmap = BitmapFactory.decodeStream(ImageUtil
					.parseUrl(sm[position]));
		} catch (Exception e) {

			e.printStackTrace();
		}
		FrameLayout linearLayout = (FrameLayout) View.inflate(mContext,
				R.layout.item, null);
		ImageView i = (ImageView) linearLayout
				.findViewById(R.id.image_item_image);
		i.setBackgroundDrawable(new BitmapDrawable(bitmap));
		i.setScaleType(ImageView.ScaleType.FIT_START);
		TextView t = (TextView) linearLayout.findViewById(R.id.image_item_text);
		t.setText("点击后打开重点新闻的图片正文页,如图8展示。");

		return linearLayout;

	}

}

 

package com.w.galler.text;

import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewGroup.LayoutParams;
import android.widget.BaseAdapter;
import android.widget.Gallery;
import android.widget.ImageView;

public class ImageAutoAdapter extends BaseAdapter {
	private Context mContext;
	private int aid;
	private int[] m;

	/**
	 * 
	 * @param c
	 * 
	 * @param aid
	 *            //选中条目的id
	 * @param flag
	 */
	public ImageAutoAdapter(Context c, int aid,int[] m) {
	    this.m=m;
		this.mContext = c;
		this.aid = aid;
		
		
	}
	@Override
	public int getCount() {
	
		return m.length;

	}

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

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

	@Override
	public View getView(int position, View convertView, ViewGroup parent) {

		for (int i = m.length - 1; i >= 0; i--) {
			m[i] = R.drawable.list_commend_icon_0;
		}
		m[m.length - aid - 1] = R.drawable.list_commend_icon_1;

		ImageView iv;
		iv = new ImageView(mContext);
		iv.setBackgroundResource(m[position]);
		iv.setScaleType(ImageView.ScaleType.FIT_START);
		iv.setLayoutParams(new Gallery.LayoutParams(LayoutParams.WRAP_CONTENT,
				20));

		return iv;
	}

	public void notifyDataSetChanged(int aid) {
		this.aid = aid;
		
		super.notifyDataSetChanged();
	}

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值