某些情况下需要实现两个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(); } }