2016-06-14 3 views
0

Я пытаюсь использовать ExpandableListView using this tutorial для отображения физических констант и их информации. Я создал макеты для дочернего элемента, родителя и активность, в которой я хотел бы отобразить список. Мои данные хранятся в HashMap в классе MyDataProvider. Я считаю, что все это нормально и должно работать.Я пытаюсь использовать ExpandableListView с пользовательским адаптером, но не могу ничего отобразить

Часть, я думаю, вызывает проблему, это адаптер, который я написал сам и включил ниже. Проблема в том, что когда я перехожу к этой активности, приложение не разбивается, а просто отображает совершенно пустой белый экран. Я также посмотрел на this tutorial, если это лучше информирует кого-либо.

Вот мой адаптер:

package com.gmd.referenceapplication; 

import android.content.Context; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.BaseExpandableListAdapter; 
import android.widget.TextView; 

import java.util.HashMap; 
import java.util.List; 
import java.util.Map; 

/** 
* Created by gmd on 6/13/2016. 
*/ 
public class MyCustomAdapter extends BaseExpandableListAdapter { 

    private Context context; 
    private HashMap<String,ListViewItem> constantsHashMap; 
    private List<String> constantList; 

    public MyCustomAdapter(Context context, HashMap<String, ListViewItem> hashMap, List<String> list){ 

     constantsHashMap = hashMap; 
     this.context = context; 
     this.constantList = list; 

    } 



    public View getChildView(int groupPosition, 
          int childPosition, 
          boolean isLastChild,View convertView, ViewGroup parent) { 
     String childTitle = (String) getChild(groupPosition, childPosition).toString(); 
     if(convertView == null) { 
      LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      convertView = inflater.inflate(R.layout.child_layout, parent, false); 
     } 
     TextView childTextView = (TextView) convertView.findViewById(R.id.textViewChild); 
     childTextView.setText(childTitle); 
     return convertView; 


    } 

    @Override 
    public boolean isChildSelectable(int groupPosition, int childPosition) { 
     return false; 
    } 

    @Override 
    public int getGroupCount() { 
     return 0; 
    } 

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

    @Override 
    public String getGroup(int groupPosition) { 
     return constantList.get(groupPosition); 
    } 

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


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

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

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

    @Override 
    public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) { 
     String groupTitle = (String) getGroup(groupPosition); 
     if (convertView == null) { 
      LayoutInflater inflater = 
        (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      convertView = inflater.inflate(R.layout.parent_layout, parent, false); 
     } 
     TextView parentTextView = (TextView) convertView.findViewById(R.id.textViewParent); 
     parentTextView.setText(groupTitle); 
     return convertView; 
     } 
    } 

Похоже, что это также может быть полезно, если я включаю класс, где я пытаюсь отобразить список здесь:

package com.gmd.referenceapplication; 

import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.ExpandableListView; 
import android.widget.ListView; 

import com.gmd.referenceapplication.R; 

import java.util.ArrayList; 
import java.util.HashMap; 
import java.util.Map; 

public class CommonConstants extends AppCompatActivity { 
    View view; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_common_constants); 


     MyDataProvider dp = new MyDataProvider(); 

     ExpandableListView view; 
     view = (ExpandableListView) findViewById(R.id.expandableList); 
     HashMap constantsHashMap; 
     constantsHashMap = dp.getCommonMap(); 
     ArrayList constantsHashMapKeys = new ArrayList<String>(constantsHashMap.keySet()); 

     MyCustomAdapter adapter = new MyCustomAdapter(this, constantsHashMap, constantsHashMapKeys); 
     view.setAdapter(adapter); 










    } 
} 

Я сделал довольно немного исследований по этому вопросу, и я все еще не уверен, что я делаю неправильно, поэтому я был бы признателен за любую помощь. Благодаря!

ответ

2

Вы возвращаете 0 в импульсах группы и детей. Этот счет используется для рендеринга групп и их детей. Попробуйте это

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

@Override 
public int getChildrenCount(int groupPosition) { 
    return 1; // Looks like you have only one child in each group, change this if not 
} 
1

Вы должны обеспечить правильное количество групп и детей вместо 0.

@Override 
public int getGroupCount() { 
    return 0; 
} 

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

 Смежные вопросы

  • Нет связанных вопросов^_^