私はこれを持っています:
赤い四角はいくつかのフラグメントを含むアクティビティで、ほとんどすべてがリストであり、すべてが異なる項目を持ちますが、カスタム ListAdapter クラスによって構築されています。
オレンジ色の四角はそれらの断片の 1 つで、実際には右の引き出しです。このフラグメントは ListFragment から拡張され、Items のない単純な xml を膨らませます。
フラグメントの内部で、onActivityCreated
カスタム ListAdapter をインスタンス化し、スクリーンショットに表示されている項目を入力します。
必要なアイテムのタイプに応じていくつかの xml があります。ここではそのうちの 3 つを確認できます。
- ボタンのタイトル (緑色の四角)
- チェック可能項目(右側にチェックアイコンができるもの)
- レギュラータイトル(「Día y hora del viaje」と書かれたもの)
ボタン タイトル (緑の四角) xml は単純な線形レイアウトです。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/menu_row_title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<ImageButton
android:id="@+id/row_button"
android:layout_width="45dp"
android:layout_height="45dp"
android:padding="10dp" />
<TextView
android:id="@+id/row_title"
android:layout_width="0px"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center_vertical"
android:minLines="1"
android:padding="10dp"
android:textAppearance="@android:style/TextAppearance.Medium"
android:textStyle="bold" />
</LinearLayout>
私がやりたいことは、オレンジ色の四角 (私のカスタム ListFragment クラス) からボタンにアクセスして、クリック リスナーを設定することです。私は調査を行い、アダプターからそれを行うことができることを知っています(私はうまく試しました)が、それは私が望んでいないことです.それらは同じアダプターによって構築されているため、同じリスナーを呼び出します。
フラグメントを膨らませた後に試しました:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View fragmentView = inflater.inflate(R.layout.menu_list, null);
//Button of location settings
((ImageButton)fragmentView.findViewById(R.id.row_button)).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
//Do here stuff I want to
}
});
super.onStart();
return fragmentView;
}
またからonStart
:
@Override
public void onStart() {
//Button of location settings
((ImageButton)getView().findViewById(R.id.row_button)).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
//Here my stuff
}
});
super.onStart();
}
また、setListAdapter()
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
//A new instance of my own ListAdapter
MyListAdapter adapter = new MyListAdapter(getActivity());
//Prepare my items and its propierties within adapter
//...
//Set the Adapter
setListAdapter(adapter);
//And then try to get the Button view
//Button of location settings
((ImageButton)getView().findViewById(R.id.row_button)).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
//My stuff here
}
});
}
しかし、何を推測しますか...フラグメントを膨らませるxmlで常に同じエラーが発生します。クリックリスナーを設定する行を削除すると機能しますが、明らかにボタンは何もしません。
どんな助けでも大歓迎です。