当我点击Android中可扩展列表视图的子视图时,我调用了另一个活动?

时间:2014-06-21 05:21:19

标签: java android android-sqlite expandablelistview

当我点击Android中可扩展列表视图的子视图按钮时,我想调用另一个活动。当我运行活动时没有显示可扩展列表视图。如何处理可扩展列表视图。可以让我知道如何这样做。

这是我的活动代码

public class My_Project extends ExpandableListActivity 
{

    ExpandableListView expListView;
    Button btnNewProject;
    Button btn_myprojectdefinemyteam;

    DBHelper databaseHelper;
    SQLiteDatabase db;
    ImageView imgButtonBack;

    List dispDataList;
     String[] array;

    String[] Task_Title_Size;
    String[] Task_Start_Date_Size;
    String[] Task_CompletionDate_Size;
    String[] Task_CompletionTime_Size;
    String[] Task_Description_Size;
    String[] Task_Status_Size;
    String[] Task_IsActive_Size;


    String[] dtrProjectNAmeSize;

    public static final String Task_Title = "Task_Titles";
    public static final String Task_Start_Date = "start_date";
    public static final String Task_CompletionDate = "completion_date";
    public static final String Task_CompletionTime = "completion_time";
    public static final String Task_Description = "task_description";
    public static final String Task_Status = "task_status";
    public static final String Task_IsActive ="IS_Active";

    private int ParentClickStatus=-1;
    private int ChildClickStatus=-1;
    Myexpandable_ListAdapter mAdapter;

    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.my_project);

        imgButtonBack = (ImageView)findViewById(R.id.imagBackButton);//ImageView imgButtonBack;
        imgButtonBack.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                Intent iBack = new Intent(My_Project.this , Menu.class);
                startActivity(iBack);
                finish();
            }
        });


        expListView = (ExpandableListView) findViewById(android.R.id.list);

        databaseHelper = new DBHelper(getApplicationContext());
        dispDataList=databaseHelper.viewMyProjectDetals();
        dtrProjectNAmeSize=new String[dispDataList.size()];
        System.out.println(" dtrProjectNAmeSize = " + dtrProjectNAmeSize);

    if ( dispDataList.size() > 6 )
        {
        Task_Title_Size=(String[])dispDataList.get(0);
        Task_Start_Date_Size=(String[]) dispDataList.get(1);
        Task_CompletionDate_Size = (String[])dispDataList.get(2);
        Task_CompletionTime_Size=(String[])dispDataList.get(3);
        Task_Description_Size=(String[]) dispDataList.get(4);
        Task_Status_Size = (String[])dispDataList.get(5);
        Task_IsActive_Size = (String[])dispDataList.get(6);

            for(int i=0;i<Task_Title_Size.length;i++)
            {
                System.out.println("New data :"+Task_Title_Size[i]);
            }


             List<Map<String, String>> groupData = new ArrayList<Map<String, String>>();
                List<List<Map<String, String>>> childData = new ArrayList<List<Map<String, String>>>();

                for (int i = 0; i < Task_Title_Size.length ; i++)
                {
                    Map<String, String> curGroupMap = new HashMap<String, String>();
                    groupData.add(curGroupMap);
                    curGroupMap.put(Task_Title,"" +Task_Title_Size[i]);

                    List<Map<String, String>> children = new ArrayList<Map<String, String>>();

                        Map<String, String> curChildMap = new HashMap<String, String>();
                        children.add(curChildMap);

                        curChildMap.put(Task_Start_Date,"" +Task_Start_Date_Size[i]);
                        curChildMap.put(Task_CompletionDate,"" +Task_CompletionDate_Size[i]);
                        curChildMap.put(Task_CompletionTime,"" +Task_CompletionTime_Size[i]);
                        curChildMap.put(Task_Description,"" +Task_Description_Size[i]);
                        curChildMap.put(Task_Status,"" +Task_Status_Size[i]);
                        curChildMap.put(Task_IsActive,"" +Task_IsActive_Size[i]);



                  childData.add(children);
                }


                mAdapter =new Myexpandable_ListAdapter(
                         this,
                         groupData,
                         R.layout.list_group,
                         new String[] { Task_Title },
                         new int[] {R.id.lblListHeader },
                         childData,
                         R.layout.child_item,
                         new String[] { Task_Start_Date , Task_CompletionDate , Task_CompletionTime , Task_Description , Task_Status , Task_IsActive},
                         new int[] { R.id.TextView_Projectdetails , R.id.textOne , R.id.textTwo , R.id.textThree , R.id.textFour, R.id.textFive}
                         );

                    expListView.setAdapter(mAdapter);  
                }  

    expListView.setOnGroupClickListener(new OnGroupClickListener()
    {
    @Override
        public boolean onGroupClick(ExpandableListView parent, View v,
                int groupPosition, long id) 
        {
            return false;
        }
    });


    //editTextTaskName = (EditText)findViewById(R.id.Task_Name);
    expListView.setOnGroupExpandListener(new OnGroupExpandListener() {

        @Override
        public void onGroupExpand(int groupPosition) {
            Toast.makeText(getApplicationContext(),
                    dtrProjectNAmeSize.length + " Expanded",
                    Toast.LENGTH_SHORT).show();
        }
    });


    expListView.setOnGroupCollapseListener(new OnGroupCollapseListener() {

        @Override
        public void onGroupCollapse(int groupPosition) {
            Toast.makeText(getApplicationContext(),
                    dtrProjectNAmeSize.length + " Collapsed",
                    Toast.LENGTH_SHORT).show();
        }
    });

              btnNewProject = (Button)findViewById(R.id.buttonmyproject_NewProject);
                btnNewProject.setOnClickListener(new OnClickListener() {

                    @Override
                    public void onClick(View v) {
                        // TODO Auto-generated method stub
                        Intent i = new Intent(My_Project.this , Add_Project.class);
                        startActivity(i);
                        finish();
                    }
                });



            }

private class Myexpandable_ListAdapter extends BaseExpandableListAdapter {

    public Myexpandable_ListAdapter(Context context,
            List<? extends Map<String, ?>> groupData, 
                    int expandedGroupLayout,
            String[] groupFrom, int[] groupTo,
            List<? extends List<? extends Map<String, ?>>> childData,
            int childLayout, String[] childFrom,
            int[] childTo) {
        super();
        // TODO Auto-generated constructor stub
    }

    private Context _context;
    private List<String> _listDataHeader; // header titles
    // child data in format of header title, child title
    private HashMap<String, List<String>> _listDataChild;
    Context context;

    public Object getChild(int groupPosition, int childPosition) 
    {
        //this.get(groupPosition).getChildren().get(childPosition);
        String strchildPosition = this._listDataChild.get(this._listDataHeader.get(groupPosition)).get(childPosition);
        System.out.println("Child Position  =" + strchildPosition);
        return this._listDataChild.get(this._listDataHeader.get(groupPosition))
                .get(childPosition);
    }

    //Call when child row clicked
    @Override
    public long getChildId(int groupPosition, int childPosition)
    {
        /****** When Child row clicked then this function call *******/

        //Log.i("Noise", "parent == "+groupPosition+"=  child : =="+childPosition);
        if( ChildClickStatus!=childPosition)
        {
           ChildClickStatus = childPosition;

           Toast.makeText(getApplicationContext(), "Parent :"+groupPosition + " Child :"+childPosition , 
                    Toast.LENGTH_LONG).show();
        }  

        return childPosition;
    }



    public View getChildView1(int groupPosition, final int childPosition,
            boolean isLastChild, View convertView, ViewGroup parent) {
                return parent;

    }

    @Override
    public View getChildView(int groupPosition, final int childPosition,
            boolean isLastChild, View convertView, ViewGroup parent) {

        final String childText = (String) getChild(groupPosition, childPosition);

        if (convertView == null) {
            LayoutInflater infalInflater = (LayoutInflater) this._context
                    .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            convertView = infalInflater.inflate(R.layout.child_item, null);
        }

        TextView txtListChild = (TextView) convertView.findViewById(R.id.TextView_Projectdetails);
        TextView txtOneListChild = (TextView)convertView.findViewById(R.id.textOne);
        TextView txtTwoListChild = (TextView)convertView.findViewById(R.id.textTwo);
        TextView txtThreeListChild = (TextView)convertView.findViewById(R.id.textThree);
        TextView txtFourListChild = (TextView)convertView.findViewById(R.id.textFour);
        TextView txtFiveListChild = (TextView)convertView.findViewById(R.id.textFive);




         txtListChild.setText(childText);
         txtOneListChild.setText(childText);
         txtTwoListChild.setText(childText);
         txtThreeListChild.setText(childText);
         txtFourListChild.setText(childText);
         txtFiveListChild.setText(childText);


        Button btnAssgnTask = (Button)convertView.findViewById(R.id.button_EditedTask);
        btnAssgnTask.setOnClickListener(new OnClickListener() {

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

            }
        });
        Button btnViewTask = (Button)convertView.findViewById(R.id.buttonViewTask);
        btnViewTask.setOnClickListener(new OnClickListener() {

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

            }
        });

        return convertView;
    }

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

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

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

    @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) this._context
                    .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            convertView = infalInflater.inflate(R.layout.list_group, null);
        }

        TextView lblListHeader = (TextView) convertView
                .findViewById(R.id.lblListHeader);
        lblListHeader.setTypeface(null, Typeface.BOLD);
        lblListHeader.setText(headerTitle);

        return convertView;
    }

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

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

}


}

先谢谢。

1 个答案:

答案 0 :(得分:0)

你的问题在这里:

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

当您展开BaseExpandableListAdaptergetChildrenCountgetGroupCount处理您的观看次数时,ParentClickStatus等于-1 getGroupView从未调用

<强>溶液

您需要返回组行号,因此请使用以下命令更改代码:

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

例如,您可以看到section 15. Implementing an expandable ListView

<强>更新

你也需要改变你的构造函数:

public Myexpandable_ListAdapter(Context context,
            List<? extends Map<String, ?>> groupData, 
                    int expandedGroupLayout,
            String[] groupFrom, int[] groupTo,
            List<? extends List<? extends Map<String, ?>>> childData,
            int childLayout, String[] childFrom,
            int[] childTo) {
        super();
        // TODO Auto-generated constructor stub
    }

您已将数据传递到此处,但未设置为任何本地数据,例如您尝试在_listDataChild方法中使用getChild,但您根本没有初始化,您需要用你在这里传递的数据在构造函数中初始化它。