2

私が試したこと


こんにちはみんな、私は自分のデータベースに記入したGridViewを作成しました。ここで、GoogleGridViewチュートリアルからonItemClickListnerを作成しました。ここで、ユーザーがGridViewで画像をクリックすると、選択されたままで背景色が表示されるようにして、ユーザーが選択した画像を確認できるようにしました。しかし、まさにこれは本来の方法で機能していません。ユーザーが次のビューをクリックすると常にブール値を使用してIfを作成しました。これにより、古いビューが再び透明になり、新しくクリックしたビューの背景色が取得されます。しかし、ビューを選択して上下にスクロールした後。強調表示されたビューは、ランダムなスタイルで変更されることがあります。

質問


だから私の質問は、onItemClickListnerで何を変更する必要があるかということです。このランダムなビューの変更は停止します(?)、そうする方法が見つかりませんでした。また、選択したビューを強調表示する簡単な方法はありますか?「選択されたビュー」を理解するために=ユーザーは、選択されたビューよりもクリックし、強調表示する必要があります。

コード


これが私のonItemClickListnerのコードです:

    //Hier wird die Grindview gefüllt
    final GridView gridview = (GridView) findViewById(R.id.SmileyGrind);
    gridview.setAdapter(new ImageAdapter(this, info));


    //Hier wird gemerkt welches bild
    gridview.setOnItemClickListener(new OnItemClickListener() {

boolean color = false;
View vv;


        public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
            Toast.makeText(SFilterConfigActivity.this, "" + position, Toast.LENGTH_SHORT).show();
           // gridview.setSelection(position);

            if ( color == false){
                v.setBackgroundColor(0xFF00FF00);
                vv = v;
                color = true;

            }
            else {
                vv.setBackgroundColor(0x00000000);
                v.setBackgroundColor(0xFF00FF00);
                vv = v;


            }


        }      
    });

あなたのためのThxは事前に助けます!

4

1 に答える 1

4

私は同じ問題を抱えていましたが、それは ListView .follow this であり、GridView でも機能します。

if(position == grid.getSelectedItemPosition())
   holder._linear.setBackgroundColor(Color.GRAY);           
else  
   holder._linear.setBackgroundColor(Color.BLACK);

GridView に使用しているレイアウトの親レイアウトを取得し、レイアウトの onClick メソッドでこれを追加するだけです。

 holder._linear.setBackgroundColor(Color.GRAY); 

これにより、レイアウトの背景色が変更され、上記のコードはランダムな背景の問題を解決します。

于 2011-10-06T06:57:39.627 に答える