Android 使用CWAC合并使TextView和ExpensableListView可滚动的线性布局
我的问题是,我的活动有一个大的Android 使用CWAC合并使TextView和ExpensableListView可滚动的线性布局,android,expandablelistview,expandablelistadapter,commonsware-cwac,Android,Expandablelistview,Expandablelistadapter,Commonsware Cwac,我的问题是,我的活动有一个大的TextView,在TextView下面有一个ExpandableListView。不幸的是,TextView的文本太长,因此在展开ExpandableListView时无法看到详细信息 所以我的问题是,如何在代码中使用,以获得一个大的可滚动活动。 我希望activity_contact.xml中从scrollView1到底部的所有内容都是可滚动的!我已经将必要的libs(merge-1.0.1.jar和sacklist-1.0.0.jar)复制到我的项目中,但是我
TextView
,在TextView
下面有一个ExpandableListView
。不幸的是,TextView
的文本太长,因此在展开ExpandableListView时无法看到详细信息
所以我的问题是,如何在代码中使用,以获得一个大的可滚动活动。
我希望activity_contact.xml中从scrollView1到底部的所有内容都是可滚动的!我已经将必要的libs(merge-1.0.1.jar和sacklist-1.0.0.jar)复制到我的项目中,但是我不知道如何应用MergeAdapter。如果有人能告诉我在哪里以及如何使用MergeAdapter,我将不胜感激强>
这是我的activity_contact.xml:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/LinearLayout1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<include layout="@layout/titlebar" />
<ScrollView
android:id="@+id/scrollView1"
android:layout_width="wrap_content"
android:layout_height="0dip"
android:layout_marginTop="0dp"
android:layout_weight="1"
android:fillViewport="true" >
<TableLayout
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<TableRow
android:id="@+id/tableRow1"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<TextView
android:id="@+id/contact"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:paddingLeft="5dp"
android:paddingRight="5dp"
android:text="@string/contact"
android:textSize="@dimen/textSize" />
</TableRow>
<TableRow
android:id="@+id/tableRow2"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<ExpandableListView
android:id="@+id/listView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp" >
</ExpandableListView>
</TableRow>
</TableLayout>
</ScrollView>
</LinearLayout>
这是我的Contact.java类:
public class Contact extends Activity {
private SparseArray<Group> groups = new SparseArray<Group>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_contact);
ExpandableListView listView = (ExpandableListView) findViewById(R.id.listView);
createData();
ExpandableListAdapter adapter = new ExpandableListAdapter(this, groups,
false, null);
listView.setAdapter(adapter);
}
private void createData() {
Group group1 = new Group(getString(R.string.stringGroup));
group1.children.add(getString(R.string.stringGroup2));
groups.append(0, group1);
}
}
公共类联系人扩展活动{
私有SparseArray组=新SparseArray();
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_contact);
ExpandableListView listView=(ExpandableListView)findViewById(R.id.listView);
createData();
ExpandableListAdapter=新的ExpandableListAdapter(此,组,
假,空);
setAdapter(适配器);
}
私有void createData(){
groupgroup1=新组(getString(R.string.stringGroup));
group1.children.add(getString(R.string.stringGroup2));
追加(0,group1);
}
}
这是我的ExpandableListAdapter.java
public class ExpandableListAdapter extends BaseExpandableListAdapter {
private final SparseArray<Group> groups;
private LayoutInflater inflater;
private Activity activity;
private boolean setOnClickListener;
private Class<?> onClickClass;
public ExpandableListAdapter(Activity act, SparseArray<Group> groups,
boolean setOnClickListener, Class<?> onClickListenerClass) {
activity = act;
this.groups = groups;
inflater = act.getLayoutInflater();
this.setOnClickListener = setOnClickListener;
this.onClickClass = onClickListenerClass;
}
@Override
public Object getChild(int groupPosition, int childPosition) {
return groups.get(groupPosition).children.get(childPosition);
}
@Override
public long getChildId(int groupPosition, int childPosition) {
return 0;
}
@Override
public View getChildView(int groupPosition, final int childPosition,
boolean isLastChild, View convertView, ViewGroup parent) {
final String children = (String) getChild(groupPosition, childPosition);
TextView text = null;
if (convertView == null) {
convertView = inflater.inflate(R.layout.listrow_details, null);
}
text = (TextView) convertView.findViewById(R.id.copyrightTextView);
text.setText(Html.fromHtml(children));
if (setOnClickListener) {
convertView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(activity, onClickClass);
intent.putExtra("name", children);
activity.startActivity(intent);
}
});
}
return convertView;
}
@Override
public int getChildrenCount(int groupPosition) {
return groups.get(groupPosition).children.size();
}
@Override
public Object getGroup(int groupPosition) {
return groups.get(groupPosition);
}
@Override
public int getGroupCount() {
return groups.size();
}
@Override
public void onGroupCollapsed(int groupPosition) {
super.onGroupCollapsed(groupPosition);
}
@Override
public void onGroupExpanded(int groupPosition) {
super.onGroupExpanded(groupPosition);
}
@Override
public long getGroupId(int groupPosition) {
return 0;
}
@Override
public View getGroupView(int groupPosition, boolean isExpanded,
View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = inflater.inflate(R.layout.listrow_group, null);
}
Group group = (Group) getGroup(groupPosition);
((CheckedTextView) convertView).setText(group.string);
((CheckedTextView) convertView).setChecked(isExpanded);
return convertView;
}
@Override
public boolean hasStableIds() {
return false;
}
@Override
public boolean isChildSelectable(int groupPosition, int childPosition) {
return false;
}
}
公共类ExpandableListAdapter扩展了BaseExpandableListAdapter{
私人最终Sparsarray集团;
私人充气机;
私人活动;
私有布尔setOnClickListener;
私有类和私有类;
public ExpandableListAdapter(活动法案、SparseArray组、,
布尔值setOnClickListener,类onClickListenerClass){
活动=行动;
这个组=组;
充气器=act.getLayoutFlater();
this.setOnClickListener=setOnClickListener;
this.onClickClass=onClickListenerClass;
}
@凌驾
公共对象getChild(int-groupPosition,int-childPosition){
返回groups.get(groupPosition).children.get(childPosition);
}
@凌驾
公共长getChildId(int-groupPosition,int-childPosition){
返回0;
}
@凌驾
公共视图getChildView(int groupPosition,final int childPosition,
布尔值isLastChild、视图转换视图、视图组父级){
最终字符串children=(String)getChild(groupPosition,childPosition);
TextView text=null;
if(convertView==null){
convertView=充气机。充气(R.layout.listrow\u详细信息,空);
}
text=(TextView)convertView.findViewById(R.id.copyrightTextView);
text.setText(Html.fromHtml(children));
if(setOnClickListener){
setOnClickListener(新的OnClickListener(){
@凌驾
公共void onClick(视图v){
意向意向=新意向(活动,onClickClass);
意图。putExtra(“姓名”,儿童);
活动。开始触觉(意图);
}
});
}
返回视图;
}
@凌驾
公共整数getChildrenCount(整数组位置){
返回groups.get(groupPosition.children.size();
}
@凌驾
公共对象getGroup(int-groupPosition){
返回groups.get(groupPosition);
}
@凌驾
public int getGroupCount(){
返回组。size();
}
@凌驾
公共void-ongroupposition(int-groupPosition){
super.ongroupposition(groupPosition);
}
@凌驾
已扩展的公共组(int-groupPosition){
super.onGroupExpanded(groupPosition);
}
@凌驾
公共长getGroupId(int-groupPosition){
返回0;
}
@凌驾
公共视图getGroupView(int-groupPosition,布尔值isExpanded,
视图(视图、视图组父级){
if(convertView==null){
convertView=充气机。充气(R.layout.listrow_组,空);
}
组组=(组)getGroup(组位置);
((CheckedTextView)convertView).setText(group.string);
((CheckedTextView)convertView).setChecked(isExpanded);
返回视图;
}
@凌驾
公共布尔表ID(){
返回false;
}
@凌驾
公共布尔值isChildSelectable(int-groupPosition,int-childPosition){
返回false;
}
}
listrow_details.xml:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="50dp"
android:clickable="true"
android:orientation="vertical" >
<TextView
android:id="@+id/copyrightTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:drawablePadding="15dp"
android:gravity="center_vertical"
android:linksClickable="true"
android:padding="10dp"
android:textStyle="bold" >
</TextView>
<View
android:layout_width="match_parent"
android:layout_height="0dp"
android:background="@android:color/black" />
</LinearLayout>
MergeAdapter
是一个ListAdapter
,而不是expandablelistapter
。您不能使用MergeAdapter
解决问题。欢迎您通读MergeAdapter
的源代码,并尝试找出是否有方法创建MergeExpandableListAdapter
或类似的东西
或者,在ExpandableListView
之后创建一个没有长TextView
的UI