首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >可扩展ListView不能扩展

可扩展ListView不能扩展
EN

Stack Overflow用户
提问于 2016-11-28 22:59:19
回答 2查看 400关注 0票数 0

我有一个带有一些TextViews和图片的ExpandleListview。裁剪后,我想要showTextView作为孩子和隐藏另一个TextView在GroupView中。不幸的是,列表显示正确,但在单击项目后,它根本没有展开,事件当我设置OnGroupClickListener并尝试调试它时,断点不会触发。

XML

代码语言:javascript
复制
<<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/notificationItem"
    android:orientation="vertical"
    android:padding="15sp"
    android:animateLayoutChanges="true"
    >

<RelativeLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">

    <ImageView
        android:layout_gravity="start"
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:id="@+id/notificationLogo"
        android:adjustViewBounds="true"
        android:layout_alignParentLeft="true"
        android:clickable="false"/>
    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:paddingRight="20sp"
        android:paddingLeft="10sp"
        android:layout_toRightOf="@+id/notificationLogo"
        android:orientation="vertical"
        android:id="@+id/headerContent">

        <TextView
        android:layout_gravity="center"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/date"/>
    <TextView
        android:layout_gravity="center"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/eventName"/>

    <TextView
        android:layout_gravity="center"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/shortDescription"
        android:ellipsize="end"
        android:maxLines="2"/>
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/fullDescription"
            android:layout_gravity="center"/>
    </LinearLayout>
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/downButton"
        android:layout_centerInParent="true"
        android:layout_below="@+id/headerContent"
        android:background="@android:color/transparent"/>
</RelativeLayout>
</LinearLayout>

适配器类

代码语言:javascript
复制
public class NotificationAdapter extends BaseExpandableListAdapter {

    private Context mContext;
    private ViewHolder viewHolder;
    final Typeface typeface;
    List<MuseumNotification> notificationList;

    public NotificationAdapter(Context context, List<MuseumNotification>notificationList){
        mContext = context;
        typeface = Typeface.createFromAsset(mContext.getAssets(),"fonts/fontawesome-webfont.ttf");
        this.notificationList =notificationList;
    }

    @Override
    public int getGroupCount() {
        return notificationList.size();
    }

    @Override
    public int getChildrenCount(int groupPosition) {
        return 1;
    }

    @Override
    public Object getGroup(int groupPosition) {
        return notificationList.get(groupPosition);
    }

    @Override
    public Object getChild(int groupPosition, int childPosition) {
        return notificationList.get(groupPosition);
    }

    @Override
    public long getGroupId(int groupPosition) {
        return groupPosition;
    }

    @Override
    public long getChildId(int groupPosition, int childPosition) {
        return childPosition;
    }

    @Override
    public boolean hasStableIds() {
        return false;
    }

    @Override
    public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {
        if(viewHolder==null)
            viewHolder =new ViewHolder();
        LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        convertView = inflater.inflate(R.layout.notification_item,parent,false);

        viewHolder.notificationTitle=(TextView)convertView.findViewById(R.id.eventName);
        viewHolder.shortDescription=(TextView)convertView.findViewById(R.id.shortDescription);
        viewHolder.image_url=(ImageView)convertView.findViewById(R.id.notificationLogo);
       viewHolder.notificationTitle.setText(notificationList.get(groupPosition).getTitle());
        viewHolder.shortDescription.setText(notificationList.get(groupPosition).getText());
        Glide.with(mContext)
                .load("www.logo.png")
                .fitCenter()
                .into(viewHolder.image_url);
        viewHolder.navDown=(Button)convertView.findViewById(R.id.downButton);
        viewHolder.navDown.setTypeface(typeface);
        viewHolder.navDown.setText(R.string.navDown);
        return convertView;
    }

    @Override
    public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {
        LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        convertView = inflater.inflate(R.layout.notification_item,parent,false);
        viewHolder.description=(TextView)convertView.findViewById(R.id.fullDescription);
        viewHolder.description.setText(notificationList.get(groupPosition).getText());
        return convertView;
    }

    @Override
    public void onGroupExpanded(int groupPosition) {
        super.onGroupExpanded(groupPosition);
    }

    @Override
    public void onGroupCollapsed(int groupPosition) {
        super.onGroupCollapsed(groupPosition);
    }

    @Override
    public boolean isChildSelectable(int groupPosition, int childPosition) {
        return false;
    }
    private class ViewHolder{
        private TextView notificationTitle,description,shortDescription;
        private ImageView image_url;
        private Button navDown;
    }
}

编辑:已解决:在组项目中,我有一个可点击的元素(按钮)。它应该是不可聚焦的(android:focusable=在XML中是“false”)

EN

回答 2

Stack Overflow用户

发布于 2016-11-29 00:21:09

从你提到的代码中,我认为你还没有在你的代码中定义HashMap<>(),你需要定义一个HashMap,在其中你已经存储了'group_title‘作为key,’value‘作为getChild(int groupPosition, int childPosition)方法中的代码,通过使用所需的groupPosition(value)访问哈希表的特定值。

对于eg-如果您将HashMap设为- HashMap<>(MuseumNotification, String) hm;,则在getChild(int groupPosition, int childPosition)方法中编写以下代码

代码语言:javascript
复制
  return this.hm.get(this.notificationList.get(groupPosition))
                .get(childPosition);

这里的notificationList是您在代码中定义的List,.This将为您提供该特定groupPosition所需的子级。

当您的代码在** getChild(int groupPosition, int childPosition) Group**(Object)中返回 Child**(Object)**时,您需要一个

票数 0
EN

Stack Overflow用户

发布于 2016-11-29 04:34:05

samarth kejriwal你的没有解决这个问题,然而,当我尝试在onCreate方法中以编程方式打开项目时,它的扩展是正确的(通过expandleListView.expandGroup(position);),我试图expandleListView.setOnItemClickListener,但它也不起作用。我可以滚动我的列表,只有当我点击它时,什么也没有发生。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40847306

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档