2013-06-20 77 views
0

上午在做一個應用程序在這裏顯示A到Z值在gridview中使用textview,之後,當我點擊字母表去了一些其他activity..up到我做了,我的問題是如果我點擊「A」字母表,然後我必須去Activity2然後我回到以前的活動(GridViewAcvtivity)意味着現在我需要只顯示紅色的「A」字母文本,保持默認顏色的所有字母,然後再次我點擊「B」字母表,然後我會去其他一些Activity2然後我回到GridviewActivity意味着時間只有「A和B」字母應該在「紅色」字母仍然是所有默認顏色..我嘗試使用下面的代碼,一旦我點擊一個字母表,他們要去Activity2,然後回到GridviewActivity那個時候所有的字母都是紅色的,但我只想顯示紅色的字母,任何一個給我一些想法。如何更改gridview中的項目顏色在android

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"}; 
     } 
+0

你必須製作一個你點擊了字母表的數組列表。然後在設置gridView的時候你可以選擇arrayList中的文本的顏色。 – rahultheOne

+0

thnkyou..in onitemclick我增加現在的位置到一個陣列list..then getview方法我給像下面,螺母沒有use..if(quesid.equals(位置)) \t \t \t \t { \t \t \t \t \t的TextView .setTextColor(Color.RED); \t \t \t \t} \t \t \t \t別的 \t \t \t \t { \t \t \t \t \t textView.setTextColor(Color.YELLOW); \t \t \t \t} – user2401554

+0

你必須使用這樣的..如果(arryList.contains(位置)){textView.setTextColor(Color.RED)}其他{textView.setTextColor(Color.YELLOW)} – rahultheOne

回答

2

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 
    } 
} 

作爲一個側面說明,提供了getItem()getItemId()方法的實現,否則你可能會得到奇怪的行爲。

@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. 
} 
+0

thankyou..i嘗試你的代碼..但當單擊項目時,只有它顯示綠色,如果我去其他活動,然後回到gridview意味着它不顯示綠色 – user2401554

+0

它應該工作,只是在我身邊嘗試。當你回到GridViewActivity時,你使用設備的BACK按鈕,對嗎?我的意思是,你回來時不會再開始活動。 –

+0

沒有我點擊按鈕回去按鈕點擊我給了這樣的意圖Intent i = new Intent(Activity2.this,GridViewActivity.class); \t \t \t \t startActivityForResult(i,1); – user2401554

相關問題