マップと 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 に到達することを考えました。それはエレガントなアプローチでしょうか?すべてのチェックボックスの状態 (チェックされている/チェックされていない) を確認するにはどうすればよいですか?
ありがとう