2016-11-28 22 views
0

私はいくつかのTextViewsと画像でExpandleListviewを持っています。 clikedの後、私はshowTextViewを子として使い、GroupViewの別のTextViewを非表示にします。残念ながら、リストは正しく表示されていますが、OnGroupClickListenerを設定してデバッグしようとすると、アイテムがクリックされても展開されません。そのブレークポイントはトリガーしません。Expandable ListViewは展開されません

XML

<<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> 

アダプタクラス

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; 
    } 
} 

EDIT:解決しよう:グループ項目でiはクリッカブル要素(ボタン)を有します。それはunfocusする必要があります(android:focusable = "false" in XML)

答えて

0

あなたが言及したコードから、私はあなたのコードにHashMap<>()を定義していないと思います。あなたが格納しているHashMapを定義する必要があります'group_title'をkey、 '子タイトル'をvalueとします。getChild(int groupPosition, int childPosition)メソッドのコードを、希望するgroupPosition(キー)を使用して特定のハッシュマップにアクセスして置き換えます。 EG- については

あなたは HashMap<>(MuseumNotification, String) hm; AS-HashMapを作る場合は、getChild(int groupPosition, int childPosition)方法を次のコード

return this.hm.get(this.notificationList.get(groupPosition)) 
       .get(childPosition); 

を書くここNOTIFICATIONLISTあなたのコードの.Thisで定義されているListが与えるですあなたはその特定の目的の子供ですgroupPosition ..

あなたのコードはのGroup(オブジェクト)を返しています、そこにあなたが私はそのは、(expandleListView.expandGroup(position);で)correcly拡大のonCreateメソッドでprogramiclyアイテムを開こうとするとChild(オブジェクト)

0

samarth kejriwalあなたanswearしかし問題が解決しないしたい私はexpandleListView.setOnItemClickListenerしようとしたが、そのうまくいきません。私はそれをクリックしたときにだけ何も起こらなかった私のリストをスクロールすることができます。

関連する問題