Autore Topic: setOnChildClickListener non intercettato  (Letto 583 volte)

Offline vecchiounno

  • Nuovo arrivato
  • *
  • Post: 1
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Galaxy S3
  • Sistema operativo:
    XP
setOnChildClickListener non intercettato
« il: 03 Settembre 2012, 11:34:01 CEST »
0
Prima di tutto un saluto a tutta la Community.

Questo è il mio primo post e spero con questo, oltre ad avere rispettato le usanze tradizionali di ogni forum (cerca cerca cerca prima di chiedere),
di ricevere una soluzione al mio "piccolo" problema.

Anche se nuovo (2 mesi) in Android, sono un programmatore di vecchia data in vari linguaggi (non ultimo java).

Stiamo parlando di una semplice ExpandableList che oltre alle solite azioni di view dei Gruoup e dei Child, vorrei aggiungere anche l'evento del click sulla child per poi visualizzare il valore della child in una textview.

Sono ormai 4 giorni che cerco ovunque, ma non trovo mai una soluzione funzionante o completa (almeno per la parte evento click).

questa la parte MAINACTIVITY.java
Codice (Java): [Seleziona]
public class MainActivity extends Activity {

        private ExpandableListView mExpandableListView;
        private List<GroupEntity> mGroupCollection;

        @Override
        public void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.main);
               
                StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
                StrictMode.setThreadPolicy(policy);
               
        String xml = null;        
                try {

                               parte di codice che scarica xml da internet e popola sia i Group che i Child

                        initPage();
                       
                } catch (UnsupportedEncodingException e) {
                        xml = "<results status=\"error\"><msg>Can't connect to server</msg></results>";
                } catch (MalformedURLException e) {
                        xml = "<results status=\"error\"><msg>Can't connect to server</msg></results>";
                } catch (IOException e) {
                        xml = "<results status=\"error\"><msg>Can't connect to server</msg></results>";
                }        
        }

        private void initPage() {
                mExpandableListView = (ExpandableListView) findViewById(R.id.expandableListView);
                ExpandableListAdapter adapter = new ExpandableListAdapter(this, mExpandableListView, mGroupCollection);
                mExpandableListView.setAdapter(adapter);
        }
}

questa la parte EXPANDABLELISTADAPTER.java
Codice (Java): [Seleziona]
public class ExpandableListAdapter extends BaseExpandableListAdapter {

        private Context mContext;
        private ExpandableListView mExpandableListView;
        private List<GroupEntity> mGroupCollection;
        private int[] groupStatus;

        public ExpandableListAdapter(Context pContext,
                        ExpandableListView pExpandableListView,
                        List<GroupEntity> pGroupCollection) {
               
                mContext = pContext;
                mGroupCollection = pGroupCollection;
                mExpandableListView = pExpandableListView;
                groupStatus = new int[mGroupCollection.size()];
               
               
                setListEvent();
        }

        private void setListEvent() {

                mExpandableListView.setOnGroupExpandListener(new OnGroupExpandListener() {
                        public void onGroupExpand(int arg0) {
                                // TODO Auto-generated method stub
                                groupStatus[arg0] = 1;
                        }
                });

                mExpandableListView.setOnGroupCollapseListener(new OnGroupCollapseListener() {
                        public void onGroupCollapse(int arg0) {
                                // TODO Auto-generated method stub
                                groupStatus[arg0] = 0;
                        }
                });
               
// ----------------> QUESTO QUANTO NON FUNZIONA [INIZIO]
                mExpandableListView.setOnChildClickListener(new OnChildClickListener() {
                        public boolean onChildClick(ExpandableListView parent, View v, int groupPosition, int childPosition, long id) {
                        if (groupPosition == 0 && childPosition == 0) {
                           
                        }
                        return false;
                    }
                });
// ----------------> QUESTO QUANTO NON FUNZIONA [FINE]
                               
                /*
                mExpandableListView.setOnGroupClickListener(new OnGroupClickListener() {               
                        public boolean onGroupClick(ExpandableListView arg0, View arg1, int groupPosition, long arg3) {
                        if (groupPosition == 5) {              

                        }
                        return false;
                }
            });
                */


        }

        public String getChild(int arg0, int arg1) {
                // TODO Auto-generated method stub
                return mGroupCollection.get(arg0).GroupItemCollection.get(arg1).Name;
        }

        public long getChildId(int arg0, int arg1) {
                // TODO Auto-generated method stub
                return 0;
        }

        public View getChildView(int arg0, int arg1, boolean arg2, View arg3, ViewGroup arg4) {
                // TODO Auto-generated method stub

                ChildHolder childHolder;
                if (arg3 == null) {
                        arg3 = LayoutInflater.from(mContext).inflate(R.layout.list_group_item, null);

                        childHolder = new ChildHolder();

                        childHolder.title = (TextView) arg3.findViewById(R.id.item_title);
                        arg3.setTag(childHolder);
                }else {
                        childHolder = (ChildHolder) arg3.getTag();
                }

                childHolder.title.setText(mGroupCollection.get(arg0).GroupItemCollection.get(arg1).Name);
                return arg3;
        }

        public int getChildrenCount(int arg0) {
                // TODO Auto-generated method stub
                return mGroupCollection.get(arg0).GroupItemCollection.size();
        }

        public Object getGroup(int arg0) {
                // TODO Auto-generated method stub
                return mGroupCollection.get(arg0);
        }

        public int getGroupCount() {
                // TODO Auto-generated method stub
                return mGroupCollection.size();
        }

        public long getGroupId(int arg0) {
                // TODO Auto-generated method stub
                return arg0;
        }

        public View getGroupView(int arg0, boolean arg1, View arg2, ViewGroup arg3) {
                // TODO Auto-generated method stub
                GroupHolder groupHolder;
                if (arg2 == null) {
                        arg2 = LayoutInflater.from(mContext).inflate(R.layout.list_group, null);
                        groupHolder = new GroupHolder();
                        groupHolder.img = (ImageView) arg2.findViewById(R.id.tag_img);
                        groupHolder.title = (TextView) arg2.findViewById(R.id.group_title);
                        arg2.setTag(groupHolder);
                } else {
                        groupHolder = (GroupHolder) arg2.getTag();
                }
                if (groupStatus[arg0] == 0) {
                        groupHolder.img.setImageResource(R.drawable.group_down);
                } else {
                        groupHolder.img.setImageResource(R.drawable.group_up);
                }
                groupHolder.title.setText(mGroupCollection.get(arg0).Name);

                return arg2;
        }

        class GroupHolder {
                ImageView img;
                TextView title;
        }

        class ChildHolder {
                TextView title;
        }

        public boolean hasStableIds() {
                // TODO Auto-generated method stub
                return true;
        }

        public boolean isChildSelectable(int arg0, int arg1) {
                // TODO Auto-generated method stub
                return true;
        }

}

Ho evidenziato quanto ho pensato di aggiungere per gestire l'evento click su child, ma che non viene visto da android in fase di esecuzione.
Non da errori solo che non viene coinvolto dal click

Grazie per un eventuale supporto.