- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在尝试在 SherlockFragment 中实现自定义 ExpandableListView。我跟着这个sample扩展 BaseExpandableListAdapter 并创建我的自定义适配器。
这是我的问题,当我的可扩展列表显示在屏幕上时,我可以看到所有组项目,但是当我单击其中一个时,应该显示在其下方的子项目却没有不要出现。
我试着调试它,我放在适配器中的 onGroupExpandListener 从未被调用,实际上我在我的适配器的不同方法中放置了断点,当我点击其中一个组项时从未被调用.
我尝试修改定义组项和子项的 xml 文件,使它们可点击或可聚焦,但没有任何改变。我还尝试删除我放在那里的 editText、Button 和 CheckBox,认为这可能会造成冲突 ...
我认为问题可能是由于将 ExpandableListView 与 SherlockFragment 结合使用时出现的一些不兼容问题,但根据开发人员的 forum它不是。
所以我现在真的不知道去哪里看,这可能只是我在适配器中犯的一个新手错误...任何帮助都会很棒,
提前致谢!
这是我的代码:
public class BuildingExpandalbeListAdapter extends BaseExpandableListAdapter {
private Context mContext;
private ExpandableListView mExpandableListView;
private SideEntity[] mSidesCollection;
private int[] groupStatus;
public BuildingExpandalbeListAdapter(Context pContext,
ExpandableListView pExpandableListView,
SideEntity[] pSidesCollection) {
mContext = pContext;
mSidesCollection = pSidesCollection;
mExpandableListView = pExpandableListView;
groupStatus = new int[mSidesCollection.length];
mExpandableListView.setClickable(true);
setListEvent();
}
private void setListEvent() {
mExpandableListView
.setOnGroupExpandListener(new OnGroupExpandListener() {
@Override
public void onGroupExpand(int arg0) {
// TODO Auto-generated method stub
groupStatus[arg0] = 1;
}
});
mExpandableListView
.setOnGroupCollapseListener(new OnGroupCollapseListener() {
@Override
public void onGroupCollapse(int arg0) {
// TODO Auto-generated method stub
groupStatus[arg0] = 0;
}
});
}
@Override
public Object getChild(int groupPosition, int childPosition) {
return mSidesCollection[groupPosition].getSegmentEntity(childPosition)
.getName();
}
@Override
public long getChildId(int groupPosition, int childPosition) {
return mSidesCollection[groupPosition].getSegmentEntity(childPosition)
.getId();
}
@Override
public View getChildView(int groupPosition, int childPosition,
boolean isLastChild, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
ChildHolder childHolder;
if (convertView == null) {
convertView = LayoutInflater.from(mContext).inflate(
R.layout.building_list_item, null);
childHolder = new ChildHolder();
childHolder.editText1 = (EditText) convertView
.findViewById(R.id.editText1);
childHolder.checkBox1 = (CheckBox) convertView
.findViewById(R.id.checkBox1);
convertView.setTag(childHolder);
} else {
childHolder = (ChildHolder) convertView.getTag();
}
childHolder.editText1.setText(mSidesCollection[groupPosition]
.getSegmentEntity(childPosition).getName());
childHolder.checkBox1.setChecked(mSidesCollection[groupPosition]
.getSegmentEntity(childPosition).hasDoor());
return convertView;
}
@Override
public int getChildrenCount(int groupPosition) {
// TODO Auto-generated method stub
return mSidesCollection[groupPosition].getSegmentsCollection().size();
}
@Override
public Object getGroup(int groupPosition) {
// TODO Auto-generated method stub
return mSidesCollection[groupPosition];
}
@Override
public int getGroupCount() {
// TODO Auto-generated method stub
return mSidesCollection.length;
}
@Override
public long getGroupId(int groupPosition) {
// TODO Auto-generated method stub
return groupPosition;
}
@Override
public View getGroupView(int groupPosition, boolean isExpanded,
View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
GroupHolder groupHolder;
if (convertView == null) {
convertView = LayoutInflater.from(mContext).inflate(
R.layout.building_list_group, null);
groupHolder = new GroupHolder();
groupHolder.editText1 = (EditText) convertView
.findViewById(R.id.editText1);
groupHolder.editText2 = (EditText) convertView
.findViewById(R.id.editText2);
convertView.setTag(groupHolder);
} else {
groupHolder = (GroupHolder) convertView.getTag();
}
groupHolder.editText1
.setText(mSidesCollection[groupPosition].getName());
groupHolder.editText2.setText(Integer
.toString(mSidesCollection[groupPosition]
.getSegmentsCollection().size()));
return convertView;
}
class GroupHolder {
EditText editText1;
EditText editText2;
}
class ChildHolder {
EditText editText1;
CheckBox checkBox1;
}
@Override
public boolean hasStableIds() {
// TODO Auto-generated method stub
return true;
}
@Override
public boolean isChildSelectable(int groupPosition, int childPosition) {
// TODO Auto-generated method stub
return true;
}
}
这是我使用此适配器的 SherlockFragment:
public class BuildingFragment extends SherlockFragment {
private ViewGroup myViewGroup;
private View v;
private SideEntity[] mSideCollection;
private BuildingsDbAdapter buildingDataBase;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
if (container == null) {
return null;
}
myViewGroup = container;
myViewGroup.removeAllViews();
v = inflater.inflate(R.layout.building_data_layout, container, false);
buildingDataBase = new BuildingsDbAdapter(getSherlockActivity());
return v;
}
@Override
public void onResume() {
super.onResume();
buildingDataBase.open();
mSideCollection = BuildingsDbAdapter
.fetchSideMatchingBuildingId(CustomTabFragmentActivity.mBuildingId);
for (int i = 0; i < mSideCollection.length; i++) {
BuildingsDbAdapter.fetchSegmentMatchingSideId(
mSideCollection[i].getId(), mSideCollection[i]);
}
ExpandableListView mExpandableListView = (ExpandableListView) v
.findViewById(R.id.expandableListView1);
BuildingExpandalbeListAdapter mAdapter = new BuildingExpandalbeListAdapter(
v.getContext().getApplicationContext(), mExpandableListView,
mSideCollection);
mExpandableListView.setAdapter(mAdapter);
buildingDataBase.close();
}
}
这是我的 xml 文件:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/linearLayout1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<TextView
android:id="@+id/textView1"
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_gravity="left|center_vertical"
android:layout_marginLeft="10dip"
android:layout_weight="3"
android:singleLine="true"
android:text="Building name: "
android:textColor="@android:color/black"
android:textSize="13dip" />
<TextView
android:id="@+id/textView2"
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_gravity="left|center_vertical"
android:layout_marginLeft="10dip"
android:layout_weight="4"
android:singleLine="true"
android:text="Columbia Tower"
android:textColor="@android:color/black"
android:textSize="15dip"
android:textStyle="italic" />
<!-- <Button
android:id="@+id/button1"
android:layout_width="0dip"
android:layout_height="30dp"
android:layout_gravity="right|center_vertical"
android:layout_marginRight="10dip"
android:layout_weight="1"
android:background="@color/honeycombish_blue"
android:drawableTop="@drawable/edit_query"
android:gravity="center_vertical|center_horizontal" /> -->
</LinearLayout>
<ExpandableListView
android:id="@+id/expandableListView1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:scrollbars="none"
android:divider="@android:color/black"
android:clipChildren="false"
android:focusable="true" >
</ExpandableListView>
</LinearLayout>
group_item:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/RelativeLayout"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:clickable="true"
android:gravity="center_vertical"
android:orientation="vertical" >
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/linearLayout1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/RelativeLayout"
android:layout_marginTop="6dip"
android:layout_toLeftOf="@+id/button1"
android:orientation="horizontal" >
<TextView
android:id="@+id/textView1"
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_gravity="left|center_vertical"
android:layout_marginLeft="5dip"
android:layout_weight="2"
android:singleLine="true"
android:text="Side: "
android:textColor="@android:color/black"
android:textSize="13dip" />
<EditText
android:id="@+id/editText1"
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_gravity="left|center_vertical"
android:layout_marginLeft="5dip"
android:layout_weight="2"
android:singleLine="true"
android:textColor="@android:color/black"
android:textSize="15dip"
android:textStyle="italic" />
<TextView
android:id="@+id/textView3"
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_gravity="left|center_vertical"
android:layout_marginLeft="5dip"
android:layout_weight="5"
android:singleLine="true"
android:text="Number of Segment:"
android:textColor="@android:color/black"
android:textSize="13dip" />
<EditText
android:id="@+id/editText2"
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_gravity="left|center_vertical"
android:layout_marginLeft="5dip"
android:layout_weight="2"
android:ems="10"
android:inputType="number"
android:text="0"
android:textSize="13dip" />
</LinearLayout>
<Button
android:id="@+id/button1"
android:layout_width="30dip"
android:layout_height="30dip"
android:layout_alignBottom="@+id/linearLayout1"
android:layout_alignParentRight="true"
android:layout_marginLeft="2dip"
android:background="@android:color/transparent"
android:drawableBottom="@drawable/ic_edit_shape"
android:gravity="bottom|center_horizontal" />
</RelativeLayout>
列表项:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/RelativeLayout"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:clickable="true"
android:orientation="vertical" >
<Button
android:id="@+id/button1"
android:layout_width="30dip"
android:layout_height="30dip"
android:layout_alignBottom="@+id/linearLayout1"
android:layout_alignParentLeft="true"
android:layout_marginLeft="2dip"
android:background="@android:color/transparent"
android:drawableBottom="@drawable/ic_edit_shape"
android:gravity="bottom|center_horizontal" />
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/linearLayout1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/RelativeLayout"
android:layout_marginTop="6dip"
android:layout_toRightOf="@+id/button1"
android:orientation="horizontal" >
<TextView
android:id="@+id/textView1"
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_gravity="left|center_vertical"
android:layout_marginLeft="5dip"
android:layout_weight="2"
android:singleLine="true"
android:text="Name: "
android:textColor="@android:color/black"
android:textSize="13dip" />
<EditText
android:id="@+id/editText1"
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_gravity="left|center_vertical"
android:layout_marginLeft="5dip"
android:layout_weight="2"
android:singleLine="true"
android:text="Shop1"
android:textColor="@android:color/black"
android:textSize="15dip"
android:textStyle="italic" />
<CheckBox
android:id="@+id/checkBox1"
android:layout_width="0dip"
android:layout_height="30dip"
android:layout_weight="1"
android:hint="Door" />
</LinearLayout>
</RelativeLayout>
最佳答案
好的,我发现我的错误,问题实际上来 self 在我的组项目中使用的 EditText 和 Button。当我将此小部件设置为不可点击和不可聚焦时,对我的组项目的点击正常执行。
我应该早点检测到这个冲突,我之前尝试删除我的 Button 和我的 EditText,但我忘记了在某个时候我曾尝试将 android:clickable="true"
添加到我的 RelativeLayout (认为它会允许点击我的组项目)但它也造成了冲突:/无论如何,如果有人有类似的问题,请记住检查组项目中的任何 View 是否可点击或可聚焦,并将它们设置为 android:clickable="false"android:focusable="false"
关于安卓 :- Custom ExpandableListView : cannot expand group item to display child item in CustomListView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12799800/
这里我试图在 FlatList 中显示一个名为“posts”的数组。 render() { console.log(this.props.posts); return (
这是我的代码: {{day(list)}} {{list.weather[0].description}}
我是 Mahout 的新手,并且仍在使用它。 我的问题是,将 Item-Item 和 User-Item 结合起来是否合适? 我的用例是,一个社交网络应用会尝试根据用户历史数据(优先级较高)为当前用户
下午好, 我按数据库搜索以测试特定类测试,当我放置一个新项目时,如果列表包含该项目。 @Test public void insertAndDeleteTask() throws Interrupte
我有一个关于 ionic 框架的问题,我希望有人能帮助我...我有一个带有“ion-item-right”的 ionic 列表。这一切都可以,按钮在右边。现在我需要其他三个居中的图标,这样我就有了:文
我经常遇到类似下面的代码: if ( items != null) { foreach(T item in items) { //... } } 基本上,if 条件确
我最近问了a question about LocalStorage .使用 JSON.parse(localStorage.item) 和 JSON.parse(localStorage['item
我最近问了a question about LocalStorage .使用 JSON.parse(localStorage.item) 和 JSON.parse(localStorage['item
这个问题已经有答案了: Type mismatch: cannot convert from Item to Item (1 个回答) 已关闭 7 年前。 我很困惑。我无法将外部类的实例变量 Node
我目前正在使用 MUI Grid(但我对替代解决方案持开放态度)并且我想要并排放置两个组件:最右边的组件占 400px宽度和左侧组件占据其余部分。 || || || 当页面宽度缩小时: | | ||
我最近问过a question about LocalStorage 。使用 JSON.parse(localStorage.item) 和 JSON.parse(localStorage['item
public class Document extends Model { ... @ManyToMany public Set accessors; ... } 我想选择访问者包含某个用户的所有文档
我正在使用 selenium webdriver 为单页 Web 应用程序开发一个 Java 框架,使用以下模式:PageObject、SlowLoadableComponent(责任链)、PageF
最近在学习C,在网上发现了一个问题。问题是: What is the problem with this function in terms of memory allocation? What is
我有这个代码 ( -1 ? true : false} /> {genre.item.name}
在ASP.Net中使用DataGrid时真的没有快捷方法吗 (e.Item.ItemType==ListItemType.Item || e.Item.ItemType==ListItemType.A
我正在使用工作流程根据数据和一组要求将大量 pdf 从一个位置复制到其他大坝位置。我正在使用以下代码 Assets damAsset = manager.createAsset(path, is, m
我是 PowerShell 的新手。 我正在尝试自动将 dll 组件从源服务器上的文件夹部署到目标服务器上的多个文件夹。这看起来应该很简单:将组件从源服务器上的源(部署)文件夹复制到目标服务器上的文件
我的代码: for column_name, column_data in summary_words.iteritems(): if column_name != "summary" and
我的代码: for column_name, column_data in summary_words.iteritems(): if column_name != "summary" and
我是一名优秀的程序员,十分优秀!