2013-06-20 2 views
0

Я делаю одно приложение здесь, отображая значения от A до Z, используя textview в gridview, после этого, когда я нажимаю алфавит, я собираюсь перейти к другому действию ... к тому, что я сделал, моя проблема если я нажимаю «А», тогда мне нужно перейти Activity2, тогда я вернусь к предыдущей активности (GridViewAcvtivity), теперь мне нужно показать только текст алфавита «А» красного цвета, сохранить все алфавиты по умолчанию, затем снова я нажимаю «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 вы можете выбрать цвет текста, который находится в массиве. – 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, значит, его не показывать greencolor – user2401554

+0

Он должен работать, просто попробовал на моей стороне. Когда вы вернетесь в GridViewActivity, вы используете кнопку BACK на устройстве, верно? Я имею в виду, что вы снова не начинаете свою деятельность, возвращаясь. –

+0

no am click button, чтобы вернуться внутрь. Нажмите кнопку «Я», как я сделал это намерение i = новое намерение (Activity2.this, GridViewActivity.class); \t \t \t \t startActivityForResult (i, 1); – user2401554

Смежные вопросы