実際にはネストされたリストビューを使用しています。親リストビューには、カスタムアダプタと子用の通常のリストビューがあります。
私は使用できることを知っていますexpandable list view
。しかし、私のシナリオでは、子アイテムを処理するのはより複雑です。多くのコンポーネントがあります。
これが私が試したものです。親リストのボタンをクリックすると、対応する子リストの項目が表示されます。それはうまく機能しています。しかし、問題はスクロールだけです。子リストをスクロールしたかったのですが、親リストがスクロールしています。私は両方setScrollContainer(false)
とsetClickable(false)
(試したばかりの)親のために試しましたが、役に立たなかった。
これは私のコードです。
activity_main.xml
<RelativeLayout
android:id="@+id/parent_rel"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingBottom="@dimen/activity_vertical_margin" >
<Button
android:id="@+id/b_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="15dp"
android:text="View" />
<TextView
android:id="@+id/parent_txt"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/b_view"
android:layout_alignBottom="@+id/b_view"
android:layout_alignParentLeft="true"
android:layout_marginLeft="96dp"
android:text="TextView" />
</RelativeLayout>
<RelativeLayout
android:id="@+id/child_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/parent_rel"
android:layout_below="@+id/parent_rel"
android:visibility="gone" >
<ListView
android:id="@+id/ch_listView"
android:layout_width="match_parent"
android:layout_height="150dp"
android:background="#000000" >
</ListView>
</RelativeLayout>
MainActivity.java
パブリッククラスMainActivityはListActivityを拡張します{
ListView lv;
String[] prnt_items = { "a", "b", "c", "d", "e", "f", "g", "h", "i", "j" };
boolean isViewing = false;
RelativeLayout layout;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
lv = getListView();
lv.setCacheColorHint(Color.parseColor("#00000000"));
lv.setAdapter(new ParentItems());
}
class ParentItems extends BaseAdapter {
@Override
public int getCount() {
return prnt_items.length;
}
@Override
public Object getItem(int position) {
return prnt_items[position];
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
final View p_v = getLayoutInflater().inflate(
R.layout.activity_main, parent, false);
TextView tv = (TextView) p_v.findViewById(R.id.parent_txt);
tv.setText(prnt_items[position]);
Button sub_view = (Button) p_v.findViewById(R.id.b_view);
sub_view.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (!isViewing) {
lv.setScrollContainer(false);
//lv.setClickable(false);
isViewing = !isViewing;
layout = (RelativeLayout) p_v.findViewById(R.id.child_view);
layout.setVisibility(View.VISIBLE);
ListView c_lv = (ListView) p_v.findViewById(R.id.ch_listView);
c_lv.setAdapter(new ArrayAdapter<String>(
getApplicationContext(),
android.R.layout.simple_list_item_1,
new String[] { "Hello", "Hai", "Oops!!!" }));
c_lv.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0,View arg1, int arg2, long arg3) {
Toast.makeText(getApplicationContext(),
"Click @ " + arg2, Toast.LENGTH_SHORT)
.show();
}
});
}
else{
if(layout !=null){
isViewing = !isViewing;
lv.setScrollContainer(true);
//lv.setClickable(true);
layout.setVisibility(View.GONE);
}
}
}
});
return p_v;
}
}
}
助けに感謝します。
ありがとう。