1
實際上我使用的是嵌套的listview。父列表視圖使用自定義適配器和普通的子視圖列表視圖。我知道我可以使用expandable list view
。但是在我的場景中,子項目處理起來更復雜。有很多組件。禁用滾動的listview不起作用
這是我試過的,點擊父列表中的一個按鈕顯示相應的子列表項。這工作正常。但唯一的問題是滾動。我想滾動子列表,但父列表正在滾動。我試過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;
}
}
}
欣賞的幫助。
謝謝。
哇!驚人。有效。謝謝Aashish。 – Aswin 2013-03-05 12:23:25