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了