可扩展列表视图在Android中的片段活动中不起作用

Yuva tsu

我在片段中使用可扩展listview。但是获取LayoutInflater的空指针异常是行不通的。

    public class DemoActivity extends Fragment{
public static final String ARG_SECTION_NUMBER = "section_number";
ExpandableListAdapter listAdapter;
ExpandableListView expListView;
List<String> listDataHeader;
HashMap<String, List<String>> listDataChild;
Context mContext;

public DemoActivity(Context context) {
    this.mContext=DemoActivity.this.getActivity();;
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View rootView = inflater.inflate(R.layout.demo, container, false);
    TextView dummyTextView = (TextView) rootView.findViewById(R.id.section_label_demo);
    dummyTextView.setText(Integer.toString(getArguments().getInt(ARG_SECTION_NUMBER)));
    // get the listview
    expListView = (ExpandableListView) rootView.findViewById(R.id.lvExp);

    // preparing list data
    prepareListData();

    listAdapter = new ExpandableListAdapter(mContext, listDataHeader, listDataChild);

    // setting list adapter
    expListView.setAdapter(listAdapter);

    // Listview Group click listener
    expListView.setOnGroupClickListener(new OnGroupClickListener() {

        @Override
        public boolean onGroupClick(ExpandableListView parent, View v,
                int groupPosition, long id) {

            return false;
        }
    });

    // Listview Group expanded listener
    expListView.setOnGroupExpandListener(new OnGroupExpandListener() {

        @Override
        public void onGroupExpand(int groupPosition) {
            Toast.makeText(mContext,
                    listDataHeader.get(groupPosition) + " Expanded",
                    Toast.LENGTH_SHORT).show();
        }
    });

    // Listview Group collasped listener
    expListView.setOnGroupCollapseListener(new OnGroupCollapseListener() {

        @Override
        public void onGroupCollapse(int groupPosition) {
            Toast.makeText(mContext,listDataHeader.get(groupPosition) + " Collapsed",
                    Toast.LENGTH_SHORT).show();

        }
    });

    // Listview on child click listener
    expListView.setOnChildClickListener(new OnChildClickListener() {

        @Override
        public boolean onChildClick(ExpandableListView parent, View v,
                int groupPosition, int childPosition, long id) {
            // TODO Auto-generated method stub
            Toast.makeText(mContext,listDataHeader.get(groupPosition)+ " : "+ listDataChild.get(
                            listDataHeader.get(groupPosition)).get(childPosition), Toast.LENGTH_SHORT).show();
            return false;
        }
    });
    return rootView;
}

private void prepareListData() {
    listDataHeader = new ArrayList<String>();
    listDataChild = new HashMap<String, List<String>>();


    // Adding child data
    List<String> list1 = new ArrayList<String>();
    list1.add("The Shawshank Redemption");

    List<String> nowShowing = new ArrayList<String>();

    nowShowing.add("Despicable Me 2");


    List<String> comingSoon = new ArrayList<String>();
    comingSoon.add("2 Guns");

    String[] data=search();
    // Adding child data
    for(int i=0;i<search().length;i++)
    {
        listDataHeader.add(""+data[i]);
        //Toast.makeText(mContext,data[i], Toast.LENGTH_SHORT).show();


        listDataChild.put(listDataHeader.get(i), list1);

    }
}

public String[] search()
{
    String[] filenames;
    File file = new File(Environment.getExternalStorageDirectory(), "/Recording");
    if(!file.exists()){
        file.mkdirs();
    }

    //filenames = new String[30];
    if(!file.list().equals(""))
    {
        filenames = file.list();
        int total = 0;

        for (int i = 0; i< filenames.length; i++)
        {
            if (filenames[i].contains(".3gp"))
            {
                total++;
            }
        }
    }
    else
    {
        String[] filearray=new String[]{""};
        filenames=filearray;
    }
    return filenames;
}

  }

适配器类

   public class ExpandableListAdapter extends BaseExpandableListAdapter {

private Context _context;
private List<String> _listDataHeader; 
private HashMap<String, List<String>> _listDataChild;
private EditText editTask;
private CheckBox mCB;
private ImageView mImageView;


public ExpandableListAdapter(Context context, List<String> listDataHeader,
        HashMap<String, List<String>> listChildData) {
    this._context = context;
    this._listDataHeader = listDataHeader;
    this._listDataChild = listChildData;

}

@Override
public Object getChild(int groupPosition, int childPosititon) {
    return this._listDataChild.get(_listDataHeader.get(groupPosition))
            .get(childPosititon);
}

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

@Override
public View getChildView(final int groupPosition, final int childPosition,
        boolean isLastChild, View convertView, final ViewGroup parent) {
    if (convertView == null) {
        LayoutInflater infalInflater = (LayoutInflater) _context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        convertView = infalInflater.inflate(R.layout.list_item, null);
    }

    ImageView txtListChild = (ImageView) convertView.findViewById(R.id.lblListItem);
    txtListChild.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub

            String data[]=search();
            Intent i=new Intent(_context,DBRoulette.class);
            i.putExtra("file_name", data[groupPosition]);
            _context.startActivity(i);

        }
    });

    ImageView send = (ImageView) convertView.findViewById(R.id.send);
    send.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            String data[]=search();
            Intent i=new Intent(_context,XPlayer.class);
            i.putExtra("file_name", data[groupPosition]);
            _context.startActivity(i);
        }
    });


    mImageView=(ImageView) convertView.findViewById(R.id.editImage);
    mImageView.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {

            String data[]=search();
            Intent i=new Intent(_context,GoogleDrive.class);
            i.putExtra("file_name", data[groupPosition]);
            _context.startActivity(i);

        }
    });


    return convertView;
}

@Override
public int getChildrenCount(int groupPosition) {
    return _listDataChild.get(_listDataHeader.get(groupPosition)).size();
}

@Override
public Object getGroup(int groupPosition) {
    return _listDataHeader.get(groupPosition);
}

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

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

@Override
public View getGroupView(int groupPosition, boolean isExpanded,
        View convertView, ViewGroup parent) {
    String headerTitle = (String) getGroup(groupPosition);
    if (convertView == null) {
        LayoutInflater infalInflater = (LayoutInflater)_context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
             /***HERE I'M GETTING NULL POINTER EXCEPTION***/

        convertView = infalInflater.inflate(R.layout.list_group, null);
    }
    TextView lblListHeader = (TextView) convertView.findViewById(R.id.lblListHeader);
    lblListHeader.setText(headerTitle);
    return convertView;
}

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

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

 public String[] search()
    {
     String[] filenames;
        File file = new File(Environment.getExternalStorageDirectory(), "/Recording");
          if(!file.exists()){
              file.mkdirs();
          }

        //filenames = new String[30];
        if(!file.list().equals(null))
        {
        filenames = file.list();
        int total = 0;

        for (int i = 0; i< filenames.length; i++)
        {
          if (filenames[i].contains(".3gp"))
            {
              total++;
             }
          }
        }
        else
        {
            String[] filearray=new String[]{""};
            filenames=filearray;
        }
        return filenames;
    }
  }

更新logcat的-

 10-16 15:15:44.011: E/AndroidRuntime(731): FATAL EXCEPTION: main
 10-16 15:15:44.011: E/AndroidRuntime(731): java.lang.NullPointerException
 10-16 15:15:44.011: E/AndroidRuntime(731):     at com.example.android.recorder.ExpandableListAdapter.getGroupView(ExpandableListAdapter.java:127)
 10-16 15:15:44.011: E/AndroidRuntime(731):     at android.widget.ExpandableListConnector.getView(ExpandableListConnector.java:445)
 10-16 15:15:44.011: E/AndroidRuntime(731):     at android.widget.AbsListView.obtainView(AbsListView.java:1315)
 10-16 15:15:44.011: E/AndroidRuntime(731):     at android.widget.ListView.makeAndAddView(ListView.java:1727)
 10-16 15:15:44.011: E/AndroidRuntime(731):     at android.widget.ListView.fillDown(ListView.java:652)
 10-16 15:15:44.011: E/AndroidRuntime(731):     at android.widget.ListView.fillFromTop(ListView.java:709)
 10-16 15:15:44.011: E/AndroidRuntime(731):     at android.widget.ListView.layoutChildren(ListView.java:1580)
 10-16 15:15:44.011: E/AndroidRuntime(731):     at android.widget.AbsListView.onLayout(AbsListView.java:1147)
 10-16 15:15:44.011: E/AndroidRuntime(731):     at android.view.View.layout(View.java:7035)
 10-16 15:15:44.011: E/AndroidRuntime(731):     at android.widget.RelativeLayout.onLayout(RelativeLayout.java:909)
 10-16 15:15:44.011: E/AndroidRuntime(731):     at android.view.View.layout(View.java:7035)
 10-16 15:15:44.011: E/AndroidRuntime(731):     at android.widget.FrameLayout.onLayout(FrameLayout.java:333)
 10-16 15:15:44.011: E/AndroidRuntime(731):     at android.view.View.layout(View.java:7035)
 10-16 15:15:44.011: E/AndroidRuntime(731):     at android.support.v4.view.ViewPager.onLayout(ViewPager.java:1589)
 10-16 15:15:44.011: E/AndroidRuntime(731):     at android.view.View.layout(View.java:7035)
 10-16 15:15:44.011: E/AndroidRuntime(731):     at android.widget.FrameLayout.onLayout(FrameLayout.java:333)
 10-16 15:15:44.011: E/AndroidRuntime(731):     at android.view.View.layout(View.java:7035)
 10-16 15:15:44.011: E/AndroidRuntime(731):     at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1249)
 10-16 15:15:44.011: E/AndroidRuntime(731):     at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1125)
 10-16 15:15:44.011: E/AndroidRuntime(731):     at android.widget.LinearLayout.onLayout(LinearLayout.java:1042)
 10-16 15:15:44.011: E/AndroidRuntime(731):     at android.view.View.layout(View.java:7035)
 10-16 15:15:44.011: E/AndroidRuntime(731):     at android.widget.FrameLayout.onLayout(FrameLayout.java:333)
 10-16 15:15:44.011: E/AndroidRuntime(731):     at android.view.View.layout(View.java:7035)
 10-16 15:15:44.011: E/AndroidRuntime(731):     at android.view.ViewRoot.performTraversals(ViewRoot.java:1045)
 10-16 15:15:44.011: E/AndroidRuntime(731):     at  android.view.ViewRoot.handleMessage(ViewRoot.java:1727)
 10-16 15:15:44.011: E/AndroidRuntime(731):     at android.os.Handler.dispatchMessage(Handler.java:99)
 10-16 15:15:44.011: E/AndroidRuntime(731):     at android.os.Looper.loop(Looper.java:123)
 10-16 15:15:44.011: E/AndroidRuntime(731):     at android.app.ActivityThread.main(ActivityThread.java:4627)
 10-16 15:15:44.011: E/AndroidRuntime(731):     at java.lang.reflect.Method.invokeNative(Native Method)
 10-16 15:15:44.011: E/AndroidRuntime(731):     at java.lang.reflect.Method.invoke(Method.java:521)
 10-16 15:15:44.011: E/AndroidRuntime(731):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
 10-16 15:15:44.011: E/AndroidRuntime(731):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)

10-16 15:15:44.011:E / AndroidRuntime(731):在dalvik.system.NativeStart.main(本机方法)

自动机器人

将上下文传递给适配器,如下所示:

 listAdapter = new ExpandableListAdapter(getActivity(), listDataHeader, listDataChild);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

invalidateOptionsMenu在片段中不起作用

来自分类Dev

invalidateOptionsMenu在片段中不起作用

来自分类Dev

Android列表视图setOnItemClickListener不起作用

来自分类Dev

可扩展列表视图在Android中的片段活动中不起作用

来自分类Dev

startActivityForResult在片段中不起作用

来自分类Dev

按钮在android片段中不起作用

来自分类Dev

Android-可扩展Listview SetIndicatorBounds在Kitkat Android-4.4中不起作用

来自分类Dev

在片段中添加可扩展列表

来自分类Dev

可扩展文本在对话框片段中不起作用

来自分类Dev

片段隐藏在Android中不起作用

来自分类Dev

在Android中替换片段时,addToBackstack不起作用

来自分类Dev

FacesServlet在Web片段中不起作用

来自分类Dev

可扩展CSS div在iOS 8中不起作用

来自分类Dev

具有可扩展列表视图OnchildclickListner和OnGroupclickListner的NavigationDrawer不起作用

来自分类Dev

FindviewbyId方法在片段中不起作用

来自分类Dev

片段getActivity()中的Android AlertDialog Builder不起作用

来自分类Dev

onListItemClick在使用片段的列表视图中不起作用

来自分类Dev

setOnItemClickListener在列表视图android中不起作用

来自分类Dev

同一活动中同一类的两个片段不起作用

来自分类Dev

Android LocationManager在特定活动中不起作用

来自分类Dev

当从扩展插件的类中调用时,为什么调用扩展活动的类不起作用?

来自分类Dev

android-展开式列表在viewpager片段中不起作用

来自分类Dev

Android:片段中的适配器不起作用

来自分类Dev

按 id 查找视图在片段方法 android 中不起作用

来自分类Dev

片段中的返回堆栈不起作用

来自分类Dev

带有 recyclerview 的 Android viewpager 在片段中不起作用

来自分类Dev

将片段添加到活动中,但它不起作用

来自分类Dev

片段中的片段接口不起作用

来自分类Dev

单击列表视图项启动新活动不起作用

Related 相关文章

  1. 1

    invalidateOptionsMenu在片段中不起作用

  2. 2

    invalidateOptionsMenu在片段中不起作用

  3. 3

    Android列表视图setOnItemClickListener不起作用

  4. 4

    可扩展列表视图在Android中的片段活动中不起作用

  5. 5

    startActivityForResult在片段中不起作用

  6. 6

    按钮在android片段中不起作用

  7. 7

    Android-可扩展Listview SetIndicatorBounds在Kitkat Android-4.4中不起作用

  8. 8

    在片段中添加可扩展列表

  9. 9

    可扩展文本在对话框片段中不起作用

  10. 10

    片段隐藏在Android中不起作用

  11. 11

    在Android中替换片段时,addToBackstack不起作用

  12. 12

    FacesServlet在Web片段中不起作用

  13. 13

    可扩展CSS div在iOS 8中不起作用

  14. 14

    具有可扩展列表视图OnchildclickListner和OnGroupclickListner的NavigationDrawer不起作用

  15. 15

    FindviewbyId方法在片段中不起作用

  16. 16

    片段getActivity()中的Android AlertDialog Builder不起作用

  17. 17

    onListItemClick在使用片段的列表视图中不起作用

  18. 18

    setOnItemClickListener在列表视图android中不起作用

  19. 19

    同一活动中同一类的两个片段不起作用

  20. 20

    Android LocationManager在特定活动中不起作用

  21. 21

    当从扩展插件的类中调用时,为什么调用扩展活动的类不起作用?

  22. 22

    android-展开式列表在viewpager片段中不起作用

  23. 23

    Android:片段中的适配器不起作用

  24. 24

    按 id 查找视图在片段方法 android 中不起作用

  25. 25

    片段中的返回堆栈不起作用

  26. 26

    带有 recyclerview 的 Android viewpager 在片段中不起作用

  27. 27

    将片段添加到活动中,但它不起作用

  28. 28

    片段中的片段接口不起作用

  29. 29

    单击列表视图项启动新活动不起作用

热门标签

归档