如何在android中更改gridview中的项目颜色

如何在android中更改gridview中的项目颜色,android,android-emulator,Android,Android Emulator,我在这里做一个应用程序我在gridview中使用textview显示A到Z值,之后当我单击字母表时,我将进入其他活动。在此之前,我的问题是如果我单击“A”字母表,那么我必须进入活动2,然后我将返回到以前的活动(GridViewAcvtivity),这意味着现在我只需要显示“A”字母表文本为红色,保留所有字母表的默认颜色,然后再次单击“B”字母表,然后我将执行其他活动2然后我将返回GridView活动意味着时间只有“A和B”字母表应为“红色”,保留字母表的所有默认颜色..我尝试使用以下代码,单击字

我在这里做一个应用程序我在gridview中使用textview显示A到Z值,之后当我单击字母表时,我将进入其他活动。在此之前,我的问题是如果我单击“A”字母表,那么我必须进入活动2,然后我将返回到以前的活动(GridViewAcvtivity),这意味着现在我只需要显示“A”字母表文本为红色,保留所有字母表的默认颜色,然后再次单击“B”字母表,然后我将执行其他活动2然后我将返回GridView活动意味着时间只有“A和B”字母表应为“红色”,保留字母表的所有默认颜色..我尝试使用以下代码,单击字母表后,他们会去活动2,然后我会回到GridviewActivity那个时候所有的字母都会变成红色,但我只想显示一个红色的字母,任何人都能给我一些想法

public class GridViewActivity extends Activity {

GridView gridView;

static final String[] MOBILE_OS = new String[] { "A", "B",
        "C", "D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"};

@Override
public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    gridView = (GridView) findViewById(R.id.gridView1);

    gridView.setAdapter(new ImageAdapter(this, MOBILE_OS));

    gridView.setOnItemClickListener(new OnItemClickListener() {
        public void onItemClick(AdapterView<?> parent, View v,
                int position, long id) {
        Toast.makeText(
                    getApplicationContext(),""+position, Toast.LENGTH_SHORT).show();
            GlobalClass.value1=1;
            Intent i=new Intent(GridViewActivity.this,Activity2.class);
            i.putExtra("k1", "position");
            startActivity(i);
            }
    });

}
public class ImageAdapter extends BaseAdapter {
    private Context context;
    private final String[] mobileValues;

    public ImageAdapter(Context context, String[] mobileValues) {
        this.context = context;
        this.mobileValues = mobileValues;
    }

    public View getView(int position, View convertView, ViewGroup parent) {

        LayoutInflater inflater = (LayoutInflater) context
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);

        View gridView;

        if (convertView == null) {

            gridView = new View(context);

            // get layout from mobile.xml
            gridView = inflater.inflate(R.layout.mobile, null);

            // set value into textview
            TextView textView = (TextView) gridView
                    .findViewById(R.id.grid_item_label);
            textView.setText(mobileValues[position]);

            if(GlobalClass.value1==1)
            {
                textView.setTextColor(Color.RED);
            }
            } else {
            gridView = (View) convertView;
        }

        return gridView;
    }

    @Override
    public int getCount() {
        return mobileValues.length;
    }

    @Override
    public Object getItem(int position) {
        return null;
    }

    @Override
    public long getItemId(int position) {
        return 0;
    }

}


String mLabelsIds[]={"RED","YELLOW","black"};
      }
公共类GridViewActivity扩展活动{
GridView;
静态最终字符串[]MOBILE_OS=新字符串[]{“A”,“B”,
“C”、“D”、“E”、“F”、“G”、“H”、“I”、“J”、“K”、“L”、“M”、“N”、“O”、“P”、“Q”、“R”、“S”、“T”、“U”、“V”、“W”、“X”、“Y”、“Z”};
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
gridView=(gridView)findViewById(R.id.gridView1);
setAdapter(新的ImageAdapter(这个是MOBILE_OS));
setOnItemClickListener(新的OnItemClickListener(){
public void onItemClick(AdapterView父视图、视图v、,
内部位置,长id){
Toast.makeText(
getApplicationContext(),“”+位置,Toast.LENGTH\u SHORT.show();
全局类值1=1;
意图i=新意图(GridViewActivity.this,Activity2.class);
i、 putExtra(“k1”,“位置”);
星触觉(i);
}
});
}
公共类ImageAdapter扩展了BaseAdapter{
私人语境;
私有最终字符串[]mobileValues;
公共ImageAdapter(上下文上下文,字符串[]mobileValues){
this.context=上下文;
this.mobileValues=mobileValues;
}
公共视图getView(int位置、视图转换视图、视图组父视图){
LayoutFlater充气器=(LayoutFlater)上下文
.getSystemService(上下文布局\充气机\服务);
视图网格视图;
if(convertView==null){
gridView=新视图(上下文);
//从mobile.xml获取布局
gridView=充气机。充气(R.layout.mobile,空);
//将值设置为textview
TextView TextView=(TextView)gridView
.findViewById(R.id.grid\u item\u标签);
setText(mobileValues[position]);
if(GlobalClass.value1==1)
{
textView.setTextColor(Color.RED);
}
}否则{
gridView=(视图)convertView;
}
返回gridView;
}
@凌驾
public int getCount(){
返回mobileValues.length;
}
@凌驾
公共对象getItem(int位置){
返回null;
}
@凌驾
公共长getItemId(int位置){
返回0;
}
}
字符串mLabelsIds[]={“红色”、“黄色”、“黑色”};
}

setOnItemClickListener()
中,在开始活动之前更改当前单击字母的颜色。当您返回时,文本应该已经预着色

大概是这样的:

gridView.setOnItemClickListener(new OnItemClickListener() {
     public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
         TextView currentLetter = (TextView) v.findViewById(R.id.grid_item_label);
         currentLetter.setTextColor(Color.GREEN);

         // start Activity2 here
     }
}

你必须创建一个你点击过的字母的数组列表..然后在设置gridView时你可以选择arrayList.thnkyou..在onitemclick中我在一个数组列表中添加了position..然后我给出的getview方法如下,nut no use..if(quesid.equals(position)){textView.setTextColor(color.RED);}否则{textView.setTextColor(Color.YELLOW);}您必须这样使用。。if(arryList.contains(position)){textView.setTextColor(Color.RED)}else{textView.setTextColor(Color.YELLOW)}感谢它现在可以工作了。我使用了eqauls(),这就是为什么它不能工作的原因。谢谢。我尝试了你的代码。但是当点击那个项目时,它只显示绿色,如果我参加其他活动,然后回到gridview,这意味着它不会显示绿色,它应该可以工作,只是在我这边尝试过。当您返回GridViewActivity时,您使用设备的后退按钮,对吗?我的意思是,当你回来的时候,你不应该再次开始活动。不,我点击按钮返回内部按钮点击我给出的像这样的意图I=新意图(Activity2.this,GridViewActivity.class);startActivityForResult(i,1);我想这就是问题所在。实际上,您不返回,而是重新启动
GridViewActivity
,使其处于初始状态。在按钮内部,您应该调用:
finish()
。这样,当前活动将被终止,用户将返回到以前的活动。(顺便说一句,在安卓系统中,在大多数情况下,你没有(也不应该)创建返回按钮,用户只需使用设备的返回按钮)
@Override
public Object getItem(int position) {
   return mobileValues[position]; //return the element from array at specified position
}

@Override
public long getItemId(int position) {
   return position; //usually the item id is its position.
}