0

グリッドビューに3つのテキストボックス、画像、チェックボックスを持つViewHolderがあります。問題は、このビューホルダーにチェックボックスを追加した後、 onclicklistener をキャプチャ/トリガーできないように見えることです。チェックボックスのみがオンまたはオフに設定されているようです。画像またはテキストボックス上の他の領域をクリックすると、onClick イベントをトリガーしたいと考えています。

また、いくつかのチェックボックスに対して clickable を false に設定できるかどうかの手がかりがある場合は、表示できますが、アクティブではなく応答できます。

現時点での私のコードは ImageAdpater にあります:

public View getView(int position, View convertView, ViewGroup parent)
{
    ViewHolder holder;
    ImageView imgView = null;

        if (convertView == null) {

            holder = new ViewHolder(); 
            LayoutInflater ltInflate = (LayoutInflater) context.getSystemService( Context.LAYOUT_INFLATER_SERVICE ); 
            convertView = ltInflate.inflate(R.layout.griditem, null);

            holder.textview1 = (TextView) convertView.findViewById(R.id.grid_item_alert_date);
            holder.textview2 = (TextView) convertView.findViewById(R.id.grid_item_alert_time);
            holder.textview3 = (TextView) convertView.findViewById(R.id.grid_item_alert_type);

            holder.imageview    = (ImageView) convertView.findViewById(R.id.grid_item_image);
            holder.checkbox = (CheckBox) convertView.findViewById(R.id.checkbox_ack);
            convertView.setTag(holder);

        }
        else
        {   
            holder = (ViewHolder) convertView.getTag();
        }

        holder.checkbox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {

              @Override
              public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                 // TODO Auto-generated method stub
                  Toast.makeText(context, " checkbox checked", Toast.LENGTH_SHORT).show();

              } });

        holder.textview1.setText("Text 1 ");
        holder.textview2.setText("Text 2 ");
        holder.textview3.setText("Text 3 ");
        holder.checkbox.setChecked(false);
        holder.imageview.setImageBitmap(bitmap);
        holder.id = position;

        return convertView;

}

imageadpater が呼び出されるアクティビティのコード:

 GridView gridview = (GridView) findViewById(R.id.mygridview);
        adapter = new ImageAdapter(this);
        gridview.setAdapter(adapter);

        gridview.setOnItemClickListener(new OnItemClickListener()
        {   
            public void onItemClick(AdapterView<?> parent, View v, int position, long id)
            {
                Toast.makeText(getBaseContext(),"pic" + (position + 1) + " selected",
                        Toast.LENGTH_SHORT).show();
            }
        }
        );

上記の gridview.setOnItemClickListener が呼び出されていないのはなぜですか? さまざまなセットアップを試しましたが、何も機能していないようです。チェックボックスイベントのみが機能し、上記のように getView で定義されている場合も同様です。

緊急の解決策が必要な場合、乾杯

4

1 に答える 1

3

これらの行をレイアウト xml のチェックボックスに追加します。

android:focusable="false"
android:focusableInTouchMode="false"

これでうまくいきます。

于 2012-10-10T00:02:19.170 に答える