Я пытаюсь использовать 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);
}
}
Я сделал довольно немного исследований по этому вопросу, и я все еще не уверен, что я делаю неправильно, поэтому я был бы признателен за любую помощь. Благодаря!