首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > Android >

android关于gridview动态更改某项背景的有关问题

2012-04-26 
android关于gridview动态更改某项背景的问题最近发现android的gridview里的部分函数并不能实现描述里的功

android关于gridview动态更改某项背景的问题
最近发现android的gridview里的部分函数并不能实现描述里的功能,比如getChildAt(int),必须要通过重写BaseAdapter里的getView(int, View, ViewGroup)可以实现返回在某个位置的View组件。可我现在想实现的功能是,显示出来的GridView中的某些项的背景与其它的不同,这些并不一定都会被用户点击。本以为获得了这个组件直接设置它的背景就可以,但似乎并没有任何变化,请大家出出主意,有关的代码在下面
CusApp.java:

Java code
public class CusApp extends Activity {    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);                initScreen();    }    public void initScreen(){        GridView infoGrid = (GridView)findViewById(R.id.infoGrid);                infoGrid.setAdapter(new InfoAdapter(this));        infoGrid.setOnItemClickListener(new myItemClickListener());        TextView tv = (TextView)(infoGrid.getAdapter().getView(0);        tv.setBackgroundColor(Color.RED);    }    protected class myItemClickListener implements OnItemClickListener{    @Override    public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {                  }    }}

main.xml
XML code
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"         android:id="@+id/messageLayout"    android:layout_gravity="top"          android:orientation="vertical"    android:layout_width="fill_parent"          android:layout_height="wrap_content">    <GridView android:id="@+id/infoGrid" android:layout_width="fill_parent"        android:layout_height="fill_parent" android:numColumns="3"        android:verticalSpacing="10px" android:horizontalSpacing="10px"        android:columnWidth="150px" android:stretchMode="columnWidth"        android:gravity="center" android:background="#00000000"/></LinearLayout>

infoAdapter.java
Java code
public class InfoAdapter extends BaseAdapter {    private Context mContext;    private String[] itemContent = {"item 1","item 2","item 3","item 4","item 5","item 6"};        public InfoAdapter(Context c){        mContext = c;    }        @Override    public int getCount() {        return itemContent.length;    }    @Override    public Object getItem(int position) {        return null;    }    @Override    public long getItemId(int arg0) {        return 0;    }    @Override    public View getView(int position, View convertView, ViewGroup parent) {        TextView textView;                if (convertView == null) {            textView = new TextView(mContext);            textView.setGravity(Gravity.CENTER);            textView.setTextColor(Color.BLACK);            textView.setTypeface(Typeface.create("", Typeface.BOLD));            textView.setTextSize(20);            textView.setTransformationMethod(new SingleLineTransformationMethod());        } else {            textView = (TextView) convertView;                }            textView.setBackgroundColor(Color.BLUE);            textView.setText(itemContent[position]);        return textView;    }}


[解决办法]
你可以直接在baseadpte的getview方法设置你想要不同背景的view就好了,
你想要实现的功能也很简单啊。
[解决办法]
在外面定义一个map,map的key为gridview的子view的position,value就是你要设置的颜色值,
你在baseadpate的getview中写个
if(map.containKey(position)){
view.setBackgroundColor(map.get(postition));
}

你只要动态改变map里面的值,就能动态改变gridview中的item了

热点排行