您的位置:首页 > 其它

简单实现设置Gridview默认选中状态

2012-08-20 11:15 633 查看
main.XMl

XML code
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout android:orientation="vertical" android:id="@+id/loginRoot"
android:layout_width="fill_parent" android:layout_height="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android">
<LinearLayout android:gravity="center_horizontal"
android:background="@drawable/transition_line" android:layout_width="fill_parent"
android:layout_height="wrap_content">
</LinearLayout>
<!-- 中间动态加载View -->
<ScrollView android:measureAllChildren="true" android:id="@+id/containerBody"
android:layout_weight="1" android:layout_height="fill_parent"
android:layout_width="fill_parent">
</ScrollView>
<GridView android:id="@+id/GridView_toolbar"
android:layout_height="60dip" android:layout_width="fill_parent"
android:layout_alignParentBottom="true">
</GridView>
</LinearLayout>


Gridview item Xml

XML code
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/RelativeLayout_Item"
android:layout_width="fill_parent" android:layout_height="wrap_content"
android:paddingTop="10dip">
<ImageView android:id="@+id/item_image"
android:layout_centerHorizontal="true" android:layout_width="wrap_content"
android:layout_height="27dip"></ImageView>
<TextView android:layout_below="@id/item_image" android:id="@+id/item_text"
android:layout_centerHorizontal="true" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:textSize="13dip"></TextView>
</RelativeLayout>


mainActiviy

Java code
package com.android.cyts.travel.publics.common;

import java.util.ArrayList;
import java.util.HashMap;

import android.content.Intent;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.os.Bundle;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup.LayoutParams;
import android.view.Window;
import android.widget.AdapterView;
import android.widget.GridView;
import android.widget.ImageView;
import android.widget.ScrollView;
import android.widget.SimpleAdapter;
import android.widget.Toast;
import android.widget.AdapterView.OnItemClickListener;
import android.app.ActivityGroup;

/**
*
* @author
* @created
*/
public class MainMenuActivity extends ActivityGroup {

/** 默认首页状态 */
private boolean status;
private boolean pagehomestatus;
/** 动态加载的容器 */
private ScrollView container;
/** 菜单 */
private GridView menubarGrid;
private Intent intent = null;
private showImage topImgAdapter;
private FootBarAdapter footbarAdapter;

private final int TOOLBAR_ITEM_PAGEHOME = 0;
private final int TOOLBAR_ITEM_PHOTO = 1;
private final int TOOLBAR_ITEM_TRAVEL = 2;
private final int TOOLBAR_ITEM_MAP = 3;
private final int TOOLBAR_ITEM_INFORMATION = 4;

public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_activity);
container = (ScrollView) findViewById(R.id.containerBody);
showMenu();

subActivity();
}

/** 底部菜单图片 **/
int[] menu_toolbar_image_array = { R.drawable.pagehome, R.drawable.photo,
R.drawable.travel, R.drawable.map, R.drawable.information };
/** 底部菜单文字 **/
String[] menu_toolbar_name_array = { "!!", "!!", "!!", "!!", "!!" };

public void showMenu() {
intent = new Intent();
// 创建底部菜单 Toolbar
menubarGrid = (GridView) findViewById(R.id.GridView_toolbar);
menubarGrid.setBackgroundResource(R.drawable.bg);// 设置背景

menubarGrid.setNumColumns(5);// 设置每行列数
menubarGrid.setGravity(Gravity.CENTER);// 位置居中
menubarGrid.setVerticalSpacing(10);// 垂直间隔
menubarGrid.setHorizontalSpacing(10);// 水平间隔
int width = this.getWindowManager().getDefaultDisplay().getWidth()
/ menu_toolbar_image_array.length;
topImgAdapter = new showImage(this, menu_toolbar_image_array, width,
50, R.drawable.headlogo);
// menubarGrid.setAdapter(topImgAdapter);
menubarGrid.setAdapter(getMenuAdapter(menu_toolbar_name_array,
menu_toolbar_image_array));// 设置菜单Adapter
menubarGrid.setSelector(new ColorDrawable(Color.TRANSPARENT));
/** 监听底部菜单选项 **/
menubarGrid.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
status = true;
//                Toast.makeText(MainMenuActivity.this,
//                        menu_toolbar_name_array[arg2], Toast.LENGTH_SHORT)
//                        .show();
footbarAdapter.setSelectedPosition(arg2);
// topImgAdapter.SetFocus(arg2);
footbarAdapter.notifyDataSetInvalidated();
//                footbarAdapter.SetFocus(arg2);
switch (arg2) {
case TOOLBAR_ITEM_PAGEHOME:
intent.setClass(MainMenuActivity.this, ****.class);
break;
case TOOLBAR_ITEM_PHOTO:
pagehomestatus=false;
intent.setClass(MainMenuActivity.this, ****.class);
break;
case TOOLBAR_ITEM_TRAVEL:
pagehomestatus=false;
intent.setClass(MainMenuActivity.this, ****.class);
break;
case TOOLBAR_ITEM_MAP:
pagehomestatus=false;
intent.setClass(MainMenuActivity.this, ****.class);
break;
case TOOLBAR_ITEM_INFORMATION:
pagehomestatus=false;
intent.setClass(MainMenuActivity.this, Information.class);
// toolbarGrid.setVisibility(View.GONE);//隐藏菜单View.VISIBLE
break;
}
if(!pagehomestatus)
subActivity();
}
});
}

/**
* 动态添加内容
*/
public void subActivity() {
if (status == false) {
intent.setClass(MainMenuActivity.this, PageHome.class);
pagehomestatus=true;
}
container.removeAllViews();
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
// Activity 转为 View
Window subActivity = getLocalActivityManager().startActivity(
"subActivity", intent);
// 容器添加View
container.addView(subActivity.getDecorView(), LayoutParams.FILL_PARENT,
LayoutParams.FILL_PARENT);
}

/**
* 构造菜单Adapter
*
* @param menuNameArray
*            名称
* @param imageResourceArray
*            图片
* @return SimpleAdapter
*/
private SimpleAdapter getMenuAdapter(String[] menuNameArray,
int[] imageResourceArray) {
ArrayList<HashMap<String, Object>> data = new ArrayList<HashMap<String, Object>>();
for (int i = 0; i < menuNameArray.length; i++) {
HashMap<String, Object> map = new HashMap<String, Object>();
map.put("itemImage", imageResourceArray[i]);
map.put("itemText", menuNameArray[i]);
data.add(map);

}
//        SimpleAdapter simperAdapter = new SimpleAdapter(MainMenuActivity.this,
//                data, R.layout.item_menu, new String[] { "itemImage",
//                        "itemText" }, new int[] { R.id.item_image,
//                        R.id.item_text });
//        return simperAdapter;

footbarAdapter = new FootBarAdapter(this, data,
R.layout.item_menu, new String[] { "itemImage", "itemText" },
new int[] { R.id.item_image, R.id.item_text });
return footbarAdapter;

}
}


Java code
package com.android.cyts.travel.publics.common;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.SimpleAdapter;

/**
* @author
* @created on
* @version $Id$
*/
public class FootBarAdapter extends SimpleAdapter {
private View v;
private ArrayList<View> av = new ArrayList<View>();

public FootBarAdapter(Context context, List<? extends Map<String, ?>> data,
int resource, String[] from, int[] to) {
super(context, data, resource, from, to);
}

//    public void SetFocus(int index) {
//        for (int i = 0; i < 5; i++) {
//            if (i != index) {
//                av.get(i).setBackgroundResource(0);// 恢复未选中的样式
//            }
//        }
//        av.get(index).setBackgroundResource(R.drawable.headlogo);// 设置选中的样式
//        x=0;
//    }

private int selectedPosition = 0;// 选中的位置
public void setSelectedPosition(int position) {
selectedPosition = position;
}

int x = 0;

public View getView(int position, View convertView, ViewGroup parent) {
v = super.getView(position, convertView, parent);
x++;
if (position == selectedPosition) {
v.setBackgroundResource(R.drawable.headlogo);
}
else{
v.setBackgroundResource(0);
}
//        System.out.println("_---" + x);
//        System.out.println("_+++" + position);
//        if (x >= 2 && x <= 6) {
//            av.add(v);
//        }
//        System.out.println("!!!" + av.size());
return v;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: