我正在尝试创建可扩展的listView,当我运行应用程序标题列表显示但当我点击标题列表子项目没有显示和应用程序崩溃所以PLZ帮助我
我的应用LogCat -
java.lang.NullPointerException: Attempt to invoke interface method 'int java.util.List.size()' on a null object reference
at com.example.gulab.expendablelistview.myAdapter.getChildrenCount(myAdapter.java:33)
at android.widget.ExpandableListConnector.refreshExpGroupMetadataList(ExpandableListConnector.java:563)
at android.widget.ExpandableListConnector.expandGroup(ExpandableListConnector.java:688)
at android.widget.ExpandableListView.handleItemClick(ExpandableListView.java:693)
at android.widget.ExpandableListView.performItemClick(ExpandableListView.java:653)
at android.widget.AbsListView$PerformClick.run(AbsListView.java:3042)
at android.widget.AbsListView$3.run(AbsListView.java:3879)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
MainActivity -
public class MainActivity extends Activity {
myAdapter myAdapter;
HashMap <String,List<String>> child_items;
List<String> parent_items;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
parentListData();
childListData();
ExpandableListView expandableListView= (ExpandableListView) findViewById(R.id.expandableListView);
myAdapter=new myAdapter(this,parent_items,child_items);
expandableListView.setAdapter(myAdapter);
}
public void parentListData() {
parent_items=new ArrayList<>();
parent_items.add("Action Movies");
parent_items.add("Romantic Movies");
parent_items.add("Comedy Movies");
}
public void childListData() {
child_items=new HashMap<>();
List<String> action=new ArrayList<>();
action.add("aa");
action.add("aa");
action.add("aa");
List<String> romantic=new ArrayList<>();
romantic.add("aa");
romantic.add("aa");
romantic.add("aa");
List<String> comedy=new ArrayList<>();
comedy.add("aa");
comedy.add("aa");
comedy.add("aa");
child_items.put(action.get(0),action);
child_items.put(romantic.get(1),romantic);
child_items.put(comedy.get(2),comedy);
}
}
myAdapter -
public class myAdapter extends BaseExpandableListAdapter {
Context context;
List<String> parent_items;
HashMap<String,List<String>> child_items;
public myAdapter(Context context, List<String> parent_items, HashMap<String, List<String>> child_items) {
this.context=context;
this.parent_items=parent_items;
this.child_items=child_items;
}
@Override
public int getGroupCount() {
return parent_items.size();
}
@Override
public int getChildrenCount(int groupPosition) {
return child_items.get(parent_items.get(groupPosition)).size();
}
@Override
public Object getGroup(int groupPosition) {
return parent_items.get(groupPosition);
}
@Override
public Object getChild(int groupPosition, int childPosition) {
return child_items.get(parent_items.get(groupPosition)).get(childPosition);
}
@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) {
String text= (String) getGroup(groupPosition);
if(convertView==null){
LayoutInflater inflater= (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView=inflater.inflate(R.layout.parent_view,parent,false);
}
TextView textView= (TextView) convertView.findViewById(R.id.parent_text);
textView.setText(text);
return convertView;
}
@Override
public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {
String text= (String) getChild(groupPosition,childPosition);
if(convertView==null){
LayoutInflater inflater= (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView=inflater.inflate(R.layout.child_view,parent,false);
}
TextView textView= (TextView) convertView.findViewById(R.id.child_text);
textView.setText(text);
return convertView;
}
@Override
public boolean isChildSelectable(int groupPosition, int childPosition) {
return true;
}
}