2

の要素をチェックする方法はありgridviewますか?

メソッドが見つかりません。toggle()またはsetChecked(true)gridviewBaseAdapterを拡張するアダプターがあり、要素がチェックされているときに背景色を変更したい(選択されているだけではありません)。

ListView:GridView.setChoicheMode(MULTICHOICE)を実行してから、item.toggle()またはitem.setChecked(true)チェックの状態をビューに保存します。

編集:

CheckedTextViewチェック状態を保存するために空を追加しました。しかし、これを行うためのよりクリーンな方法はありますか?

Edit2 これでやりたいことができますが、グリッドビューを下にスクロールしてから上にスクロールすると、選択したアイテムが選択されなくなります。

boolean checked = layout.getCheckedItemPositions().get(position);
                if(checked){
                    check.toggle();
                    view.setBackgroundColor(getResources().getColor(android.R.color.transparent));
                }
                else{
                    check.toggle();
                    view.setBackgroundColor(getResources().getColor(android.R.color.holo_green_light));
                }

ここで、layoutはグリッドビューのレイアウトです。アダプタのgetViewメソッドを変更する必要があると思いますが、このコードは機能しません。

CheckedTextView check = (CheckedTextView) layout.findViewById(R.id.txv_grid_check);
        boolean checked = check.isChecked();
        if(checked){
            layout.setBackgroundColor(c.getResources().getColor(android.R.color.holo_green_light));
        }
        else{
            layout.setBackgroundColor(c.getResources().getColor(android.R.color.transparent));
        }

編集3

リストまたはグリッドビューをスクロールするとビューが破棄されて再作成されるため、私が望むこと(状態をCheckedTextView要素に格納する)を実行する方法はないと思います。そのため、アイテムの状態をアダプターに処理する必要がありました。チェックされた項目の位置を格納するためにintのHashSetを使用し、グリッドビューからこのリストを処理するためのパブリックメソッドを作成しました。gridviewアクティビティでは、アダプタを取得してからmyadapter.check(int position)またはuncheck(int position)を実行することができます。次に、アダプタのgetView()メソッドで、位置がリストにあるかどうかを確認し、適切な背景色を設定する必要があります。

4

2 に答える 2

2

この回答がお役に立てば幸いです。この例では、グリッドアイテムレイアウトにTextViewがあり、これをCheckedTextViewまたはCheckboxに変更します。getView()で状態を確認し、グリッドアイテムの背景色を設定します。

于 2013-01-03T07:55:47.723 に答える
0

このコードを使用してください。それは私にとってうまくいきます。

public View getView(final int position, View convertView, ViewGroup parent) {
            View vi=convertView;
            if(convertView==null)
                vi = inflater.inflate(R.layout.list_row, null);

             final MyDat mydat;// = new MyDat();
            if (position >= MyViewedMeItemList.size()) {
                mydat = new MyDat();

            } 
            else
            {
                mydat = MyViewedMeItemList.get(position);
            }

            mydat.title = (TextView)vi.findViewById(R.id.title); // title
            mydat.artist = (TextView)vi.findViewById(R.id.artist); // artist name
            mydat.duration = (TextView)vi.findViewById(R.id.duration); // duration
            mydat.thumb_image=(ImageView)vi.findViewById(R.id.list_image); // thumb image
            mydat.cccheckbomx=(CheckBox)vi.findViewById(R.id.rajesh);        
            mydat.cccheckbomx.setVisibility(View.VISIBLE);


            if (mydat.myCheckStatus) {
                // Toast.makeText(MessageInboxDelete.this, "true --->" +
                // position,
                // Toast.LENGTH_SHORT).show();
                mydat.cccheckbomx.setChecked(true);
            } else {
                /*
                 * Toast.makeText(MessageInboxDelete.this, "false --->" +
                 * position, Toast.LENGTH_SHORT).show();
                 */
                mydat.cccheckbomx.setChecked(false);
            }

           mydat.cccheckbomx.setOnClickListener(new OnClickListener() {

                @Override
                public void onClick(View paramView) {
                    // TODO Auto-generated method stub
                    //Toast.makeText(context, "Rajesh", Toast.LENGTH_SHORT).show();




                    int gridchild;
                    gridchild = list.getChildCount();
                    for (int j = 0; j < gridchild; j++) {
                        // DrawArea_Steptwo.gridview.getChildAt(j);

                    //  Toast.makeText(context, "Rajesh", Toast.LENGTH_SHORT).show();
                        RelativeLayout gridchildlayout = (RelativeLayout) list
                                .getChildAt(j);

                        CheckBox tempRadioToggle = (CheckBox) gridchildlayout
                                .findViewById(R.id.rajesh);

                        tempRadioToggle.setChecked(false);                    

                        MyDat tempViewholder = MyViewedMeItemList.get(j);
                        tempViewholder.myCheckStatus = false;
                    }


                    for(int j = 0; j < MyViewedMeItemList.size(); j++) {
                        MyDat tempViewholder = MyViewedMeItemList.get(j);
                        tempViewholder.myCheckStatus = false;
                    }
                    CheckBox tempRadioToggle = (CheckBox) paramView.findViewById(R.id.rajesh);      
                    tempRadioToggle.setChecked(true);

                    MyDat tempViewholder = MyViewedMeItemList.get(position);

                            if (tempViewholder.myCheckStatus == false) {
                                tempViewholder.myCheckStatus = true;
                                // tempViewholder.deleteRadioButton.setChecked(true);


                            } else {
                                tempViewholder.myCheckStatus = false;
                                // tempViewholder.deleteRadioButton.setChecked(false);

                            }


                }
            });
            HashMap<String, String> song = new HashMap<String, String>();
            song = data.get(position);

            // Setting all values in listview
            mydat.title.setText(song.get(CustomizedListView.KEY_TITLE));
            mydat.artist.setText(song.get(CustomizedListView.KEY_ARTIST));
            mydat.duration.setText(song.get(CustomizedListView.KEY_DURATION));
            imageLoader.DisplayImage(song.get(CustomizedListView.KEY_THUMB_URL), mydat.thumb_image);

            if (MyViewedMeItemList.size() <= position) {
                MyViewedMeItemList.add(mydat);
            }



            return vi;
        }

     public  class MyDat{

           Boolean myCheckStatus=false;
           TextView title ;
           TextView artist;
           TextView duration;
           ImageView thumb_image;
           CheckBox cccheckbomx;

       }
    }
于 2013-01-03T09:29:30.357 に答える