ExpandListView Adapter - avec hash map ne marche pas
Bonjour,
J`ai personalise l`adapter et j`ai les erreurs.
J`arrive pas a trouver pourquoi C`est quoi l`erreur. Est-ce que sa vient de l`adapter? Comme j`ai personalise cette derniere, je ne sais pas trop si j`a bien fait.
Citation:
java.lang.RuntimeException: Unable to start activity
ComponentInfo{MyProject/MyProject.MainActivity}:
java.lang.NullPointerException
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2184)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233)
at android.app.ActivityThread.access$800(ActivityThread.java:135)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5001)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NullPointerException
at MyProject.EventListFragment.Data(EventListFragment.java:124)
at MyProject.EventListFragment.onCreateView(EventListFragment.java:146)
at android.support.v4.app.Fragment.performCreateView(Fragment.java:1786)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:953)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1136)
at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:739)
at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1499)
at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:548)
at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1171)
at android.app.Activity.performStart(Activity.java:5241)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2157)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233)
at android.app.ActivityThread.access$800(ActivityThread.java:135)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5001)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
at dalvik.system.NativeStart.main(Native Method)
EventListFragment
Code:
1 2 3 4 5 6 7 8 9 10 11 12
| @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
View view = inflater.inflate(R.layout.fragment_event_list, container, false);
expandableList = (ExpandableListView) view.findViewById(R.id.expandableView);
getActivity().setTitle("All");
ExpandableListViewAdapter expandableListAdapter = new ExpandableListViewAdapter(getActivity());
expandableList.setAdapter(expandableListAdapter);
Data();
return view;
} |
Data()
Code:
1 2 3 4 5 6 7 8 9 10
|
public void Data() {
ArrayList<ProductItem> productsList = new ArrayList<>();
for (String val : Client.data.keySet()) {
ProductItem dataItem = Client.data.get(val);
productsList.add(dataItem);
}
}
expandableList.setAdapter(new ExpandableListViewAdapter(getActivity(),productsList));
} |
Adapter
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128
| public class ExpandableListViewAdapter extends BaseExpandableListAdapter
{
private LayoutInflater inflater;
InterFragmentNavigator interFragmentNavigator;
ArrayList<ProductItem> dataList = new ArrayList<>();
private HashMap<String, ProductItem> listDataChild;
public ExpandableListViewAdapter(Context context) {
this.context = context;
}
public ExpandableListViewAdapter(Context context,ArrayList<ProductItem> filteredList, boolean showDateAndTime)
{
HashMap<String, ProductItem> listDataChild = new HashMap<String, ProductItem>();
for (ProductItem data : filteredList) {
this.listDataChild.put(data.Name, data);
}
for (ProductItem data: filteredList) {
listDataHeader.add(data.Name);
}
this.context=context;
inflater = LayoutInflater.from(context);
this.interFragmentNavigator = ((InterFragmentNavigator) context);
this.showDateAndTime = showDateAndTime;
}
@Override
public Object getChild(int groupPosition, int childPosition) {
return listDataChild.get(this.listDataHeader.get(groupPosition));
}
@Override
public long getChildId(int groupPosition, int childPosition) {
return childPosition;
}
@Override
public View getChildView(int groupPosition, int childPosition,
boolean isLastChild, View convertView, ViewGroup parent) {
final String childText=(String)getChild(groupPosition, childPosition);
ChildViewHolder childViewHolder;
if(convertView == null) {
childViewHolder = new ChildViewHolder();
LayoutInflater inflater=(LayoutInflater)this.context.getSystemService(context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.group_child, null);
childViewHolder.Name = (TextView) convertView.findViewById(R.id.Name);
childViewHolder.Description = (TextView) convertView.findViewById(R.id.description);
convertView.setTag(childViewHolder);
}
else {
childViewHolder = (ChildViewHolder) convertView.getTag();
}
childViewHolder.Name.setText(listDataChild.get(childPosition).Name.toUpperCase());
childViewHolder.Description.setText(listDataChild.get(childPosition).Description);
return convertView;
}
@Override
public int getChildrenCount(int groupPosition) {
return listDataChild.size();
}
@Override
public Object getGroup(int groupPosition) {
return this.listDataHeader.get(groupPosition);
}
@Override
public int getGroupCount() {
return this.listDataHeader.size();
}
@Override
public long getGroupId(int groupPosition) {
return groupPosition;
}
@Override
public View getGroupView(int groupPosition, boolean isExpanded,
View convertView, ViewGroup parent) {
GroupViewHolder groupHolder;
if (convertView == null) {
LayoutInflater inflater=(LayoutInflater)this.context.getSystemService(context.LAYOUT_INFLATER_SERVICE);
convertView=inflater.inflate(R.layout.group_row, null);
groupHolder = new GroupViewHolder();
groupHolder.Name = (TextView) convertView.findViewById(R.id.Name);
convertView.setTag(groupHolder);
} else {
groupHolder = (GroupViewHolder) convertView.getTag();
}
groupHolder.Name.setText((String) getGroup(groupPosition));
return convertView;
}
@Override
public boolean hasStableIds() {
return false;
}
@Override
public boolean isChildSelectable(int groupPosition, int childPosition) {
return false;
}
class GroupViewHolder {
public TextView Name;
}
class ChildViewHolder {
public TextView Name;
public TextView Description;
}
} |