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