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



当我点击按钮时,我想调用另一个活动,这是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;
    }
}

}

你的问题在这里:

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

当您扩展BaseExpandableListAdapter, getChildrenCountgetGroupCount时,您的视图处理数和ParentClickStatus等于-1时,getGroupView从未调用

<<p> 解决方案/strong>

您需要返回您拥有的组行号,因此将代码更改为:

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

的例子可以参见第15节。实现一个可扩展的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
    }

你传递你的数据到这里,但你不设置任何本地数据,例如,你试图使用_listDataChildgetChild方法,但你没有初始化,你需要在构造函数中初始化你的数据传递到这里。

最新更新