Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Cómo manejar el evento de clic de niño en Expandablelistview en Android?

Estoy creando lista ampliable en Android. Tengo añadir tres textview en la disposición relativa y dos botones en la disposición linear horizontal significa que estos dos botones se agregan en una fila, así que cómo puedo lanzar el acontecimiento del tecleo en esos dos botones. Y quiero llamar a otra actividad en botón chascar en lista extensible View.But no encontré ninguna idea de cómo hacer clic en el niño en ExpandableListView . Puede alguien ayudarme please.Here es mi archivo xml.

Aquí está mi archivo xml.

 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="@android:color/white" android:padding="2dp" > <TextView android:id="@+id/TextView_Projectdetails" android:layout_width="match_parent" android:layout_height="25dp" android:background="@drawable/button_shape" android:paddingLeft="10sp" android:textColor="@android:color/black" /> <TextView android:id="@+id/textOne" android:layout_width="match_parent" android:layout_height="25dp" android:layout_below="@+id/TextView_Projectdetails" android:layout_marginTop="2dp" android:background="@drawable/button_shape" android:paddingLeft="10sp" android:textColor="@android:color/black" > </TextView> <TextView android:id="@+id/textTwo" android:layout_width="match_parent" android:layout_height="25dp" android:layout_below="@+id/textOne" android:layout_marginTop="2dp" android:background="@drawable/button_shape" android:paddingLeft="10sp" android:textColor="@android:color/black" > </TextView> <LinearLayout android:id="@+id/linearlAYOUT" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@+id/textTwo" android:layout_marginTop="5dp" android:orientation="horizontal" > <Button android:id="@+id/button_EditedTask" android:layout_width="0dp" android:layout_height="27dp" android:layout_gravity="center" android:layout_weight="1" android:background="@drawable/button_shape_two" android:gravity="center" android:paddingBottom="3sp" android:paddingTop="3sp" android:text="ASSIGN TASK" android:focusable="false" android:textColor="@android:color/white" android:textSize="12sp" android:textStyle="normal" /> <Button android:id="@+id/buttonViewTask" android:layout_width="0dp" android:layout_height="27dp" android:layout_gravity="center_vertical|center_horizontal" android:layout_marginLeft="3dp" android:layout_weight="1" android:background="@drawable/button_shape_one" android:gravity="center" android:paddingBottom="3sp" android:paddingTop="3sp" android:text="VIEW TASK" android:focusable="false" android:textColor="@android:color/white" android:textSize="12sp" android:textStyle="normal" /> </LinearLayout> </RelativeLayout> 

List_Group archivo xml –

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="vertical" android:padding="8dp" android:background="#000000"> <TextView android:id="@+id/lblListHeader" android:layout_width="fill_parent" android:layout_height="wrap_content" android:paddingLeft="?android:attr/expandableListPreferredItemPaddingLeft" android:textSize="17dp" android:textColor="#f9f93d" /> </LinearLayout> 

Aquí está mi clase ExpandableListAdapter

 public class ExpandableListAdapter extends BaseExpandableListAdapter { 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 ExpandableListAdapter(Context context, List<String> listDataHeader, HashMap<String, List<String>> listChildData) { this._context = context; this._listDataHeader = listDataHeader; this._listDataChild = listChildData; } public ExpandableListAdapter (My_Project my_Project, List createGroupList, int listGroup, String[] strings, int[] is, List createChildList, int childItem, String[] strings2, int[] is2) { // TODO Auto-generated constructor stub } @Override 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); } @Override public long getChildId(int groupPosition, int childPosition) { return childPosition; } @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); txtListChild.setText(childText); txtOneListChild.setText(childText); txtTwoListChild.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 //Intent i=new Intent(context,Assign_Task.class); //StartElementListener() } }); Button btnViewTask = (Button)convertView.findViewById(R.id.buttonViewTask); 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) { 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; } } 

Aquí está mi código de actividad –

 public class My_Project extends ExpandableListActivity { expListView = (ExpandableListView) findViewById(android.R.id.list); expListView.setOnGroupClickListener(new OnGroupClickListener() { @Override public boolean onGroupClick(ExpandableListView parent, View v, int groupPosition, long id) { return false; } }); 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(); } }); expListView.setOnChildClickListener(new OnChildClickListener() { @Override public boolean onChildClick(ExpandableListView parent, View v, int groupPosition, int childPosition, long id) { // TODO Auto-generated method stub int cp = (int) mAdapter.getChildId(groupPosition, childPosition); if(cp == 3) { switch (cp) { case 3: break; } } return false; } }); mAdapter = new SimpleExpandableListAdapter( this, groupData, R.layout.list_group, new String[] { Project_Name }, new int[] {R.id.lblListHeader }, childData, R.layout.child_item, new String[] { Project_Date_Created , Project_End_Date , Project_Is_Active}, new int[] { R.id.TextView_Projectdetails , R.id.textOne , R.id.textTwo } ); expListView.setAdapter(mAdapter); } } 

2 Solutions collect form web for “Cómo manejar el evento de clic de niño en Expandablelistview en Android?”

Puede establecer setOnChildClickListener de chid del listview expandible entonces puede ir a la otra actividad de acuerdo al valor de la lista de array que se utilizan para crear listview expandible.

  menuExpandableListView .setOnChildClickListener(new ExpandableListView.OnChildClickListener() { @Override public boolean onChildClick( ExpandableListView parent, View v, int groupPosition, int childPosition, long id) { GoCategory(mainMenusList.get(groupPosition) .getPagesList().get(childPosition)); return false; } }); 

O puedes hacerlo

 @Override public View getChildView(final int groupPosition, final int childPosition, boolean isLastChild, View convertView, ViewGroup parent) { Page page =(Page) getChild(groupPosition, childPosition); convertView = inflater.inflate(R.layout.child_list_layout, null); Button button1=(Button)convertView.findViewById(R.id.button1); button1.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Your code here.... } }); return convertView; } 

¿Qué estás tratando de hacer aquí?

 expListView.setOnChildClickListener(new OnChildClickListener() { @Override public boolean onChildClick(ExpandableListView parent, View v, int groupPosition, int childPosition, long id) { // TODO Auto-generated method stub int cp = (int) mAdapter.getChildId(groupPosition, childPosition); if(cp == 3) { switch (cp) { case 3: break; } } return false; } }); 

Este oyente está utilizando para el elemento secundario, haga clic en startActivity(intent) en esta parte del código.

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.