某些情况下需要实现两个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 implementsAdapterView.OnItemSelectedListener {private Gallery newsImageGallery;// 重点新闻图片galleryprivate Gallery selectItemGallery;// 选中图片galleryprivate ImageGalleryAdapter imageGalleryAdapter;private ImageAutoAdapter selectImageAdapter;@Overridepublic 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() {@Overridepublic 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数组@Overridepublic void onItemSelected(AdapterView<?> arg0, View arg1, int arg2,long arg3) {int aid = (int) imageGalleryAdapter.getItemId(arg2);selectImageAdapter.notifyDataSetChanged(aid);}@Overridepublic 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"};@Overridepublic int getCount() {return sm.length;}@Overridepublic Object getItem(int position) {return position;}@Overridepublic long getItemId(int position) {return position;}public String getCategory(int position) {return category[position];}@Overridepublic 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;}@Overridepublic int getCount() {return m.length;}@Overridepublic Object getItem(int position) {return position;}@Overridepublic long getItemId(int position) {return position;}@Overridepublic 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();}}

更多相关文章

  1. android 获取 图片 缩略图
  2. Android(安卓)ImageView部分圆图处理组件 xutils兼容问题
  3. 【Android】ScrollView内动态添加图片间距过大的问题
  4. Android腾讯微薄客户端开发七:图片加圆角以及时间处理工具类
  5. android 背景图片的设置
  6. android skia 解析gif图片
  7. Android(安卓)平铺背景图片
  8. Android实现图片毛玻璃背景效果
  9. Android上图片压缩方式

随机推荐

  1. android webview 面试
  2. Android应用程序组件Content Provider的
  3. android获得手机的电量
  4. EditText实时判断输入字符数
  5. Android中创建与几种解析xml的方法!
  6. 一 Android(安卓)O WiFi 框架变化
  7. 浅谈Android的移动存储SharedPreferences
  8. android EditText 添加图片表情以及在四
  9. Ubuntu 12.04.3 64位 安装android sdk完
  10. 有米平台 发布android软件教程