0

マップと ExpandableListView である Android アクティビティがあります。この ExpandableListView は、ランタイムに組み込まれたコレクションとアダプターを使用して設定されます。このリスト ビューには、ラベル、画像、およびチェックボックスが含まれています。それらはフィルターとして機能する必要があります。チェックボックスがオンになっている場合、そのラベルに関連するアイテムがマップに表示されます。チェックボックスがチェックされていない場合。これらのアイテムは消えるはずです。

これは私のアクティビティとアダプターのコードです (最も重要な部分)

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="horizontal"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:id="@+id/list_item_child"
        android:gravity="center_vertical"
        android:background="@android:color/white">

 <CheckBox
        android:id="@+id/filtro_checkbox"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" 
        android:checked="true"/>

 <ImageView
        android:id="@+id/filtro_imgView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <TextView android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:id="@+id/list_item_text_child"
              android:textSize="20sp"
              android:padding="10dp"
              android:layout_marginLeft="5dp"/>


</LinearLayout>

コード:

@Override
    //in this method you must set the text to see the children on the list
    public View getChildView(int i, int i1, boolean b, View view, final ViewGroup viewGroup) {
        if (view == null) {
            view = inflater.inflate(R.layout.list_item_child, viewGroup,false);
        }

        TextView textView = (TextView) view.findViewById(R.id.list_item_text_child);
        //"i" is the position of the parent/group in the list and
        //"i1" is the position of the child
        Filtro child = mParent.get(i).getArrayChildren().get(i1);
        textView.setText(child.getTitle());

        ImageView imageView = (ImageView) view.findViewById(R.id.filtro_imgView);
        //"i" is the position of the parent/group in the list

        Drawable drawable = view.getResources().getDrawable(child.getImage());

        imageView.setImageDrawable(drawable);

        CheckBox chkbox = (CheckBox) view.findViewById(R.id.filtro_checkbox);
        chkbox.setOnCheckedChangeListener(new OnCheckedChangeListener() {

                @Override
                public void onCheckedChanged(CompoundButton buttonView,
                boolean isChecked) {
                View view2 = inflater.inflate(R.layout.list_item_child, viewGroup,false);
                // TODO Auto-generated method stub
                if (buttonView.isChecked()) {
                Toast.makeText(view2.getContext(), "Checked",
                Toast.LENGTH_SHORT).show();
                }
                else
                {
                Toast.makeText(view2.getContext(), "UnChecked",
                Toast.LENGTH_SHORT).show();
                }

                }
                });


        //return the entire view
        return view;
    }

私は Android 開発は初めてですが、理解した限りでは、このメソッド コードは各アイテムのアクティビティ レイアウトを「インスタンス化」します。これは機能しており、アイテムがエミュレーターに取り込まれています。次に、onCheckedChanged リスナーを追加しました。動作し、トーストが表示されます。しかし、チェックボックスの選択に応じてピンを表示/非表示にしたいと思います。

そのために、私はしたいです

  • チェックされているチェックボックスを取得する
  • マップからすべてのピンを消去します (そのためには、何らかの形で main_activity に到達する必要があります)
  • チェックしたチェックボックスに関連するピンを表示します

これらの手順を実行する方法がわかりません。メソッドを呼び出してピンをリロードできるようにするために、シングルトンまたはオブザーバー デザイン パターンを使用して MainActivity に到達することを考えました。それはエレガントなアプローチでしょうか?すべてのチェックボックスの状態 (チェックされている/チェックされていない) を確認するにはどうすればよいですか?

ありがとう

4

1 に答える 1