2014-11-10 3 views
0
내가 ADDTASK 및 showtask에 대한 클릭 리스너를 추가 할 button.and 헤더와 아이 position.after의 위치를 ​​얻으려면

확장 목록보기 아이 클릭 이벤트

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="55dip" 
    android:orientation="vertical" > 

    <RelativeLayout 
     android:id="@+id/relativeItem" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" > 

     <TextView 
      android:id="@+id/labourheader" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_alignParentLeft="true" 
      android:layout_centerVertical="true" 
      android:layout_marginLeft="10dp" 
      android:paddingBottom="5dp" 
      android:textColor="#000000" 
      android:textSize="17dip" /> 

     <TextView 
      android:id="@+id/labourrating" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_centerHorizontal="true" 
      android:layout_centerVertical="true" 
      android:layout_marginLeft="10dp" 
      android:paddingBottom="5dp" 
      android:textColor="#000000" 
      android:textSize="17dip" /> 

     <Button 
      android:id="@+id/addtasks" 
      android:layout_width="30dp" 
      android:layout_height="20dp" 
      android:layout_alignParentRight="true" 
      android:layout_centerVertical="true" 
      android:layout_marginRight="5dp" 
      android:background="@drawable/plussquare" 
      android:textColor="#000000" 
      android:focusable="false" 
      android:textSize="17dip" /> 

     <Button 
      android:id="@+id/showtaskbtn" 
      android:layout_width="90dp" 
      android:layout_height="30dp" 
      android:layout_centerVertical="true" 
      android:layout_toLeftOf="@id/addtasks" 
      android:textColor="#000000" 
      android:textSize="17dip" /> 
    </RelativeLayout> 

</LinearLayout> 

확장 목록보기의 자식 행에 대해 다음과 같은 레이아웃을 사용하고

이 값을 다른 활동에 전달하고 싶습니다. 내가 시도하지만 나에게 다음과 같은 버튼

의 클릭 listenr에 적절한 위치를 포기하지 않을 것은 난 그냥 당신이 원하는 무엇에 초점을

public class ListAdapterforTask extends BaseExpandableListAdapter { 

    private Context _context; 
    private List<CategoryDetail> _listDataHeader; 
    private HashMap<CategoryDetail, List<LabourDetail>> _listDataChild; 
    LabourDetail b = new LabourDetail(); 

    public ListAdapterforTask(Context context, 
      List<CategoryDetail> listDataHeader, 
      HashMap<CategoryDetail, List<LabourDetail>> listChildData) { 
     this._context = context; 
     this._listDataHeader = listDataHeader;// category name 
     this._listDataChild = listChildData;// labor name 

    } 

    @Override 
    public Object getChild(int groupPosition, int childPosititon) { 
     return this._listDataChild.get(this._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, ViewGroup parent) { 
     try { 

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

      b = _listDataChild.get(_listDataHeader.get(groupPosition)).get(
        childPosition); 

      TextView txtLabourname = (TextView) convertView 
        .findViewById(R.id.labourheader); 
      TextView txtLaborrate = (TextView) convertView 
        .findViewById(R.id.labourrating); 
      Button buttonAdd = (Button) convertView.findViewById(R.id.addtasks); 

      Button btnshowtask = (Button) convertView 
        .findViewById(R.id.showtaskbtn); 

      btnshowtask.setVisibility(View.GONE); 
      txtLabourname.setText(b.getcFirst_name() + "(" + b.getcLabor_id() 
        + ")"); 

      AddTaskToDb add = new AddTaskToDbImpl(); 

      List<TaskDetail> listtask = add.findByLabourid(Integer.parseInt(b 
        .getcLabor_id())); 

      for (int i = 0; i < listtask.size(); i++) { 
       btnshowtask.setVisibility(View.VISIBLE); 

       String firstTask = listtask.get(0).getcTask_Name(); 

       btnshowtask.setText(firstTask); 

      } 

      btnshowtask.setOnClickListener(new OnClickListener() { 
       @Override 
       public void onClick(View v) { 
//     LabourDetail b = listDataChild.get(
//       categoryList.get(groupPosition)).get(childPosition); 
// 
//     Intent i = new Intent(TaskAssigmentActivity.this, 
//       TaskActivity.class); 
//     i.putExtra("catid", b.getcCategory_id()); 
//     i.putExtra("labid", b.getcLabor_id()); 
//     startActivity(i); 
       } 
      }); 

      // String ratingstr=String.valueOf(b.getcRating()); 
      // 
      // int rating=Integer.valueOf(ratingstr); 

      txtLaborrate.setText(b.getcRating() + ""); 

      buttonAdd.setOnClickListener(new OnClickListener() { 
       @Override 
       public void onClick(View v) { 




       // int position=(Integer)v.getTag(); 
        //b = _listDataChild.get(_listDataHeader.get(groupPosition)).get(
        //  position); 

        Intent i = new Intent(_context, TaskActivity.class); 
        i.putExtra("catid", b.getcCategory_id()); 
        i.putExtra("labid", b.getcLabor_id()); 
        _context.startActivity(i); 
       } 
      }); 

     } catch (Exception e) { 
     } 

     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 this._listDataHeader.size(); 
    } 

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

    @Override 
    public View getGroupView(int groupPosition, boolean isExpanded, 
      View convertView, ViewGroup parent) { 
     if (convertView == null) { 
      LayoutInflater infalInflater = (LayoutInflater) this._context 
        .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      convertView = infalInflater.inflate(R.layout.task_assign_group, 
        null); 
     } 

     TextView lblListHeader = (TextView) convertView 
       .findViewById(R.id.lblListHeader); 
     TextView lbllabournum = (TextView) convertView 
       .findViewById(R.id.labourNumberabsent); 

     List<LabourDetail> list = _listDataChild.get(_listDataHeader 
       .get(groupPosition)); 

     int count = list.size(); 
     String counter = String.valueOf(count); 
     lbllabournum.setText(counter); 

     lblListHeader.setTypeface(null, Typeface.BOLD); 

     lblListHeader.setText(_listDataHeader.get(groupPosition) 
       .getcCategory_Name()); 

     return convertView; 
    } 

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

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

} 

답변

1
@Override 
    public View getChildView(final int groupPosition, final int childPosition, 
      boolean isLastChild, View convertView, ViewGroup parent) { 
     try { 
      b = (LabourDetail) getChild(groupPosition, childPosition); 

      Button buttonAdd = (Button) convertView.findViewById(R.id.addtasks); 

      AddTaskToDb add = new AddTaskToDbImpl(); 

      List<TaskDetail> listtask = add.findByLabourid(Integer.parseInt(b 
        .getcLabor_id())); 

      buttonAdd.setOnClickListener(new OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        //HERE YOU HAVE ACCESS TO 
        //GROUPPOSITION AND CHILDPOSITION 
        Intent intent = new Intent(_context, TaskActivity.class); 
        intent.putExtra("GroupPosition", groupPosition); 
        intent.putExtra("ChildPosition", childPosition); 
        _context.startActivity(intent); 
       } 
      }); 

     } catch (Exception e) { 
     } 

     return convertView; 
    } 

어댑터의 코드입니다 : 여기에, 각 시간은 buttonAdd입니다 하위 항목을 클릭하면 그룹 및 하위 위치가 클릭 된 TaskActivity가 시작됩니다.

희망이 도움이됩니다.

+0

나는 getchild 기능에 대해 알지 못했습니다. 왜냐하면 오늘 저는 엄마 프로젝트를 제공 할 수 있습니다 ... 덕분에 .... 많이 노력했지만 당신의 일을 많이했습니다. – asiya

+0

그것이 당신에게 효과적이었습니다! – NSimon

관련 문제