Autore Topic: onChildClick  (Letto 668 volte)

Offline Bito92

  • Utente junior
  • **
  • Post: 51
  • Respect: +7
    • Mostra profilo
onChildClick
« il: 05 Ottobre 2011, 17:14:42 CEST »
0
Perdonate l'ignoranza, volevo chiedere una piccola cosa.
Inanzitutto vorrei chiedere scusa per il disturbo causato da questa piccola sciocchezza.
Il metodo onChildClick come funzione? O meglio cosa devo mettere al posto di: onChildClick(ExpandableListView parent, View v, int groupPosition, int childPosition, long id)?
group e child position l'ho capito, solo che non riesco a capire cosa va al posto di ExpandableListView parent, View v e long id. perdonate l'ignoranza.
grazie mille in anticipo  :-)

Offline Khali

  • Utente junior
  • **
  • Post: 70
  • Respect: +7
    • u.felloni
    • Mostra profilo
  • Play Store ID:
    weetme software
  • Sistema operativo:
    windows 7
Re:onChildClick
« Risposta #1 il: 05 Ottobre 2011, 17:42:52 CEST »
0
Cosa devi fare di preciso?

Di solito si setta l'evento
getExpandableListView().setOnChildClickListener(this);

e si ridefinisce
@Override
public boolean onChildClick(ExpandableListView parent, View v, int groupPosition,
        int childPosition, long id) {
    // use groupPosition and childPosition to locate the current item in the adapter
    return true;
}

Offline Bito92

  • Utente junior
  • **
  • Post: 51
  • Respect: +7
    • Mostra profilo
Re:onChildClick
« Risposta #2 il: 05 Ottobre 2011, 17:51:16 CEST »
0
quello che vorrei fare di preciso e che al click di uno di qualsiasi child presente nella expandable listview, mi apra una nuova activity o anche la possibilita di ricevere dati dal web.
questo è il codice della expandable listview
Codice (Java): [Seleziona]
public class provaexplist extends Activity {
        private ArrayList<String> groups;
        private ArrayList<ArrayList<ArrayList<String>>> childs;
 
         public void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.main2);  
                ExpandableListView l = (ExpandableListView) findViewById(R.id.ExpandableListView01);
               
                loadData();
         
                myExpandableAdapter adapter = new myExpandableAdapter(this, groups, childs);
                        l.setAdapter(adapter);
            }
         
            public class myExpandableAdapter extends BaseExpandableListAdapter {
         
                private ArrayList<String> groups;
         
                private ArrayList<ArrayList<ArrayList<String>>> children;
         
                private Context context;
         
                public myExpandableAdapter(Context context, ArrayList<String> groups, ArrayList<ArrayList<ArrayList<String>>> children) {
                    this.context = context;
                    this.groups = groups;
                    this.children = childs;
                }
         
         
                @Override
                public boolean areAllItemsEnabled()
                {
                    return true;
                }
         
         
                @Override
                public ArrayList<String> getChild(int groupPosition, int childPosition) {
                    return children.get(groupPosition).get(childPosition);
                }
         
                @Override
                public long getChildId(int groupPosition, int childPosition) {
                    return childPosition;
                }
         
         
                @Override
                public View getChildView(int groupPosition, int childPosition, boolean isLastChild,View convertView, ViewGroup parent) {
         
                        String child = (String) ((ArrayList<String>)getChild(groupPosition, childPosition)).get(0);
         
                    if (convertView == null) {
                        LayoutInflater infalInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                        convertView = infalInflater.inflate(R.layout.expandablelistview_child, null);
                    }
         
                    TextView childtxt = (TextView) convertView.findViewById(R.id.TextViewChild01);
         
                    childtxt.setText(child);
         
                    return convertView;
                }
         
                @Override
                public int getChildrenCount(int groupPosition) {
                    return children.get(groupPosition).size();
                }
         
                @Override
                public String getGroup(int groupPosition) {
                    return groups.get(groupPosition);
                }
         
                @Override
                public int getGroupCount() {
                    return groups.size();
                }
         
                @Override
                public long getGroupId(int groupPosition) {
                    return groupPosition;
                }
         
                @Override
                public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {
         
                        String group = (String) getGroup(groupPosition);
         
                        if (convertView == null) {
                        LayoutInflater infalInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                        convertView = infalInflater.inflate(R.layout.expandablelistview_group, null);
                    }
         
                    TextView grouptxt = (TextView) convertView.findViewById(R.id.TextViewGroup);
         
                    grouptxt.setText(group);
         
                    return convertView;
                }
         
                @Override
                public boolean hasStableIds() {
                    return true;
                }
         
                @Override
                public boolean isChildSelectable(int arg0, int arg1) {
                    return true;
                }
         
            }
         
            private void loadData(){
                groups= new ArrayList<String>();
                childs= new ArrayList<ArrayList<ArrayList<String>>>();
         
                groups.add("SEGNALA INCIDENTE");
                groups.add("SEGNALA GUASTO");
                groups.add("RICHIEDI UN CAMBIO GOMME");
                groups.add("RICHIEDI UN SOCCORSO O UN TRAINO");
                groups.add("RICHIEDI UN AUTO SOSTITUTIVA");
                groups.add("PARLA CON NOI");
                groups.add("CERCA LA FILIALE PIU' VICINA");
         
                childs.add(new ArrayList<ArrayList<String>>());
                childs.get(0).add(new ArrayList<String>());
                childs.get(0).get(0).add("DENUNCIA SINISTRO");
                childs.get(0).add(new ArrayList<String>());
                childs.get(0).get(1).add("COMPILA CID");
                childs.get(0).add(new ArrayList<String>());
                childs.get(0).get(2).add("INVIA LE FOTO");
         
                childs.add(new ArrayList<ArrayList<String>>());
                childs.get(1).add(new ArrayList<String>());
                childs.get(1).get(0).add("Child 1 group 2");
                childs.get(1).add(new ArrayList<String>());
                childs.get(1).get(1).add("Child 2 group 2");
                childs.get(1).add(new ArrayList<String>());
                childs.get(1).get(2).add("Child 3 group 2");
         
                childs.add(new ArrayList<ArrayList<String>>());
                childs.get(2).add(new ArrayList<String>());
                childs.get(2).get(0).add("Child 1 group 3");
                childs.get(2).add(new ArrayList<String>());
                childs.get(2).get(1).add("Child 2 group 3");
                childs.get(2).add(new ArrayList<String>());
                childs.get(2).get(2).add("Child 3 group 3");
               
                childs.add(new ArrayList<ArrayList<String>>());
                childs.get(3).add(new ArrayList<String>());
                childs.get(3).get(0).add("Child 1 group 3");
                childs.get(3).add(new ArrayList<String>());
                childs.get(3).get(1).add("Child 2 group 3");
                childs.get(3).add(new ArrayList<String>());
                childs.get(3).get(2).add("Child 3 group 3");
               
                childs.add(new ArrayList<ArrayList<String>>());
                childs.get(4).add(new ArrayList<String>());
                childs.get(4).get(0).add("Child 1 group 3");
                childs.get(4).add(new ArrayList<String>());
                childs.get(4).get(1).add("Child 2 group 3");
                childs.get(4).add(new ArrayList<String>());
                childs.get(4).get(2).add("Child 3 group 3");
               
                childs.add(new ArrayList<ArrayList<String>>());
                childs.get(5).add(new ArrayList<String>());
                childs.get(5).get(0).add("Child 1 group 3");
                childs.get(5).add(new ArrayList<String>());
                childs.get(5).get(1).add("Child 2 group 3");
                childs.get(5).add(new ArrayList<String>());
                childs.get(5).get(2).add("Child 3 group 3");
               
                childs.add(new ArrayList<ArrayList<String>>());
                childs.get(6).add(new ArrayList<String>());
                childs.get(6).get(0).add("Child 1 group 3");
                childs.get(6).add(new ArrayList<String>());
                childs.get(6).get(1).add("Child 2 group 3");
                childs.get(6).add(new ArrayList<String>());
                childs.get(6).get(2).add("Child 3 group 3");

sto facendo delle prove e solo che mi sono bloccato qui  :-(

Offline Khali

  • Utente junior
  • **
  • Post: 70
  • Respect: +7
    • u.felloni
    • Mostra profilo
  • Play Store ID:
    weetme software
  • Sistema operativo:
    windows 7
Re:onChildClick
« Risposta #3 il: 05 Ottobre 2011, 18:12:37 CEST »
0
hai provato con

l.getExpandableListView().setOnChildClickListener(this);

e si ridefinisce
@Override
public boolean onChildClick(ExpandableListView parent, View v, int groupPosition,
        int childPosition, long id) {
    // metodo da implementare come vuoi al click sull' elemento
}

Offline Bito92

  • Utente junior
  • **
  • Post: 51
  • Respect: +7
    • Mostra profilo
Re:onChildClick
« Risposta #4 il: 05 Ottobre 2011, 18:15:28 CEST »
0
no, non ho ancora provato, adesso provo e vedo se funziona  :-)

Offline Bito92

  • Utente junior
  • **
  • Post: 51
  • Respect: +7
    • Mostra profilo
Re:onChildClick
« Risposta #5 il: 06 Ottobre 2011, 09:44:36 CEST »
0
ho provato ad inserire quel pezzo di codice insieme a un alert dialog per vedere se il click era corretto, solo che in fase di stesura mi da 3 errori:
Codice (Java): [Seleziona]
l.getExpandableListView().setOnChildClickListener(this);
                public boolean onChildClick(ExpandableListView parent, View v, int groupsPosition,int childsPosition, long id){
                        AlertDialog.Builder builder=new AlertDialog.Builder(this);
                        builder.setMessage("Hai cliccato questa voce del menù");
                        builder.setCancelable(false);
                        builder.setPositiveButton("Termina", new DialogInterface.OnClickListener(){
                                       
                                        @Override
                                        public void onClick(DialogInterface dialog, int which) {
                                                MyActivity.this.finish();
                                               
                                        }
                                });
mi da errore sulla l di getExpandableListView() dicendo che devo dichiararla come variabile, pero viene gia utilizzata e non da nessun errore, su onChildClick mi dice di rimuovere il public e mi da errore anche su MyActivity  :-(

Offline Khali

  • Utente junior
  • **
  • Post: 70
  • Respect: +7
    • u.felloni
    • Mostra profilo
  • Play Store ID:
    weetme software
  • Sistema operativo:
    windows 7
Re:onChildClick
« Risposta #6 il: 06 Ottobre 2011, 11:23:50 CEST »
+1

Mi sono divertito a giocarci un po' e ti ho preparato un esempio.
Ciao
« Ultima modifica: 06 Ottobre 2011, 13:36:52 CEST da Khali »

Offline Bito92

  • Utente junior
  • **
  • Post: 51
  • Respect: +7
    • Mostra profilo
Re:onChildClick
« Risposta #7 il: 06 Ottobre 2011, 14:42:18 CEST »
0
Grazie mille Khali  :-) adesso ci do un occhio, magari riesco a scoprire dove sto sbagliando  :-)