2016-04-11 11 views
0

私は多くのアイテムで構成されたグリッドを持っています。ユーザーがグリッド内のアイテムをクリックできるようにしたい。アイテムが強調表示されます。別の項目をクリックすると、元の表示がハイライトされ、新しい項目が強調表示されます。Androidスタジオ - 選択したグリッドアイテムをハイライト表示し、他のすべてのハイライトを強調表示するにはどうすればよいですか?

各ボックスは、背景の色が異なるTextViewです。私はどのようにハイライトするのか分かりませんので、現在私はボックスに「X」を入れています。私の質問は、以前に設定されたXを削除する方法です。ここで

は(patternColour名前と進コードを持っているだけのオブジェクトである)、これまでに私のコードです:

coloursGrid = (GridView) findViewById(R.id.gridViewColoursGrid); 
patternColourAdapter = new PatternColourAdapter(this, R.layout.colour_grid_layout, gridItemsColours); 
coloursGrid.setAdapter(patternColourAdapter); 
coloursGrid.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
    @Override 
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
     // Highlight selected colour, and unhighlight all others 
     TextView unselected; 
     for(int ii=0; ii<parent.getCount(); ii++) { 
      unselected = ????; // Don't know what to put here! 
      unselected.setText(""); 
     } 
     TextView selected = (TextView) view; 
     selected.setText("X"); 
    } 
}); 

うまくいけば、それは私が必要とするすべてのコードです - 必要に応じてさらに追加することができます。疑問符の代わりに何を試しても、エラーが発生しています(ビルドが失敗するか、その時点でアプリケーションがクラッシュする)。

どのようにすべてのTextViewをループし、それらのテキストをすべて解除するのですか?

ありがとうございました。

答えて

1

あなたはその後、sinngleChoice

android:choiceMode="singleChoice" 

をGridViewコントロールのchoiceModeを設定することができますが、グリッドビューの項目は、このような状態の背景描画可能にレイアウト設定:

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:drawable="@color/green" android:state_pressed="true"></item> 
    <item android:drawable="@color/green" android:state_activated="true"></item> 
    <item android:drawable="@android:color/transparent"></item> 
</selector> 
+0

ありがとうございます。 choiceModeの設定は私が逃したものでした、と私は思います!私は、イメージを使用して色分けを別の方法で行うことに決めました。私が達成しようとしていることをもう一度見たとき、より良く見えると思います。ご協力いただきありがとうございます! – Sharon

1
coloursGrid.setChoiceMode(ListView.CHOICE_MODE_SINGLE); 

coloursGrid.setOnItemSelectedListener(new OnItemSelectedListener() 
    { 

     @Override 
     public void onItemSelected(AdapterView<?> arg0, View arg1, 
       int arg2, long arg3) { 
      // TODO Auto-generated method stub 
      coloursGrid.setSelection(arg2) 

     } 

     @Override 
     public void onNothingSelected(AdapterView<?> arg0) { 
      // TODO Auto-generated method stub 

     } 

}); 

これは役立ちます。

+0

あなたの助けをありがとう! – Sharon

+0

は今日EODで涼しいです。 ハッピーコーディング。 – GvSharma

関連する問題