bazinga13 Δημοσ. 16 Μαΐου 2017 Δημοσ. 16 Μαΐου 2017 Την καλημερα μου σε ολους τους φιλους.Μια μικρη βοηθεια θα ηθελα γιατι εχω κολησει σ ενα σημειο απο χθες κ εχω σπασει το κεφαλι μου. Εχω ενα expandable listview στο οποιο εχουμε το ονομα του χρηστη και απο κατω εναν αριθμο τηλεφωνου.Θελω οταν κανω click πανω στον αριθμο να γινεται τηλεφωνικη κληση. Απο την MainActivity καλω την setOnChildClickListener expandableListView.setOnChildClickListener(new ExpandableListView.OnChildClickListener() { @Override public boolean onChildClick(ExpandableListView expandableListView, View clickedView, int groupPosition, int childPosition, long id) { if (ActivityCompat.checkSelfPermission(MainActivity.this, Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED) { Intent callIntent = new Intent(Intent.ACTION_CALL); callIntent.setData(Uri.parse("?????")); // Εδω πως θα παρω τα Strings απο το καθε child? startActivity(callIntent); } return false; } }); } Nα υποθεσω οτι θα πρεπει να καλεσω την getChildView απο την κλαση μου MyCustomAdapter? public class MyCustomAdapter extends BaseExpandableListAdapter { private Context context; private HashMap<String, List<String>> countriesHashMap; private List<String> countryList; public MyCustomAdapter(Context context, HashMap<String, List<String>> hashMap, List<String> list) { countriesHashMap = hashMap; this.context = context; this.countriesHashMap = hashMap; this.countryList = list; } @Override public int getGroupCount() { return countriesHashMap.size(); } @Override public int getChildrenCount(int groupPosition) { return countriesHashMap.get(countryList.get(groupPosition)).size(); } @Override public Object getGroup(int groupPosition) { return countryList.get(groupPosition); } @Override public Object getChild(int groupPosition, int childPosition) { return countriesHashMap.get(countryList.get(groupPosition)).get(childPosition); } @Override public long getGroupId(int groupPosition) { return groupPosition; } @Override public long getChildId(int groupPosition, int childPosition) { return childPosition; } @Override public boolean hasStableIds() { return false; } @Override public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) { String groupTitle = (String) getGroup(groupPosition); if (convertView == null) { LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); convertView = inflater.inflate(R.layout.parent, parent, false); } TextView parentTextView = (TextView) convertView.findViewById(R.id.textViewParent); parentTextView.setText(groupTitle); return convertView; } @Override public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) { Log.i("test", "parent view: " + parent.getTag()); String childTitle = (String) getChild(groupPosition, childPosition); if (convertView == null) { LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); convertView = inflater.inflate(R.layout.child, parent, false); } TextView childTextView = (TextView) convertView.findViewById(R.id.textViewChild); childTextView.setText(childTitle); return convertView; } @Override public boolean isChildSelectable(int groupPosition, int childPosition) { return true; } } H να τα παρω κατευθειαν απο την κλαση? public class MyDataArrays { static String[] Iannis = {"00234564"}; static String[] kostas = {"00102024"}; static String[] Nikos = {"00992288"}; static String[] Manolis = {"00987654"}; static String[] Stefanos = {"00143748"}; static String[] Dimitris = {"00989898"}; static String[] Mpampis = {"00809066"}; static String[] Basilis = {"00111120"}; static String[] Giorgos = {"00019933"}; static String[] Maria = {"00654444"}; static String[] Eirini = {"00999999"}; } Ευχαριστω και καλη μερα σε ολους.
SakislolGR Δημοσ. 17 Μαΐου 2017 Δημοσ. 17 Μαΐου 2017 Αφού το κάνεις Out of Adapter, θα πρέπει να έχεις κάποιον Data Holder (πχ μια static list) Δεν έχω δουλέψει με ExpandableListView αλλά κάπως έτσι μπορεί να είναι class MyData { private static ArrayList<Contact> contacts = new ArrayList(); //... public static Contact getByPos(int pos){ return contacts.get(pos); } } if (ActivityCompat.checkSelfPermission(MainActivity.this, Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED) { Contact contact = MyData.getByPos(childPos); Intent callIntent = new Intent(Intent.ACTION_CALL); callIntent.setData(Uri.parse(contact.getNumber())); // Εδω πως θα παρω τα Strings απο το καθε child? startActivity(callIntent); }
bazinga13 Δημοσ. 17 Μαΐου 2017 Μέλος Δημοσ. 17 Μαΐου 2017 Καλημερα φιλε μου και σ ευχαριστω για την απαντηση.Δεν εχω παραθεσει ολο τον κωδικα,εχω αλλη μια κλαση,δεν ξερω αν ενοεις αυτο public class MyDataProvider { public static HashMap<String, List<String>> getDataHashMap() { HashMap<String, List<String>> contactList = new HashMap<>(); List<String> Iannis = new ArrayList<>(); List<String> kostas = new ArrayList<>(); List<String> Nikos = new ArrayList<>(); List<String> Manolis = new ArrayList<>(); List<String> Stefanos = new ArrayList<>(); List<String> Dimitris = new ArrayList<>(); List<String> Mpampis = new ArrayList<>(); List<String> Basilis = new ArrayList<>(); List<String> Giorgos = new ArrayList<>(); List<String> Maria = new ArrayList<>(); List<String> Eirini = new ArrayList<>(); for (int i = 0; i < MyDataArrays.Iannis.length; i++) { Iannis.add(MyDataArrays.Iannis); } for (int i = 0; i < MyDataArrays.kostas.length; i++) { kostas.add(MyDataArrays.kostas); } for (int i = 0; i < MyDataArrays.Nikos.length; i++) { Nikos.add(MyDataArrays.Nikos); } for (int i = 0; i < MyDataArrays.Manolis.length; i++) { Manolis.add(MyDataArrays.Manolis); } for (int i = 0; i < MyDataArrays.Stefanos.length; i++) { Stefanos.add(MyDataArrays.Stefanos); } for (int i = 0; i < MyDataArrays.Dimitris.length; i++) { Dimitris.add(MyDataArrays.Dimitris); } for (int i = 0; i < MyDataArrays.Mpampis.length; i++) { Mpampis.add(MyDataArrays.Mpampis); } for (int i = 0; i < MyDataArrays.Basilis.length; i++) { Basilis.add(MyDataArrays.Basilis); } for (int i = 0; i < MyDataArrays.Giorgos.length; i++) { Giorgos.add(MyDataArrays.Giorgos); } for (int i = 0; i < MyDataArrays.Maria.length; i++) { Maria.add(MyDataArrays.Maria); } for (int i = 0; i < MyDataArrays.Eirini.length; i++) { Eirini.add(MyDataArrays.Eirini); } contactList.put("iannis" , Iannis); contactList.put("Kostas" , kostas); contactList.put("Nikos" , Nikos); contactList.put("Manolis" , Manolis); contactList.put("Stefanos", Stefanos); contactList.put("Dimitris", Dimitris); contactList.put("Mpampis" , Mpampis); contactList.put("Basilis" , Basilis); contactList.put("Giorgos" , Giorgos); contactList.put("Maria" , Maria); contactList.put("Eirini" , Eirini); return contactList; }} Τωρα προσπαθω να το κανω με Fragments,μου φαινεται πιο ευκολο
SakislolGR Δημοσ. 17 Μαΐου 2017 Δημοσ. 17 Μαΐου 2017 (επεξεργασμένο) Καλύτερα που το κάνεις πιο απλό με HashMaps χωρίς να φτιάξεις καν κλάση Contact. Οπότε αυτό που σου μένει να κάνεις είναι: Σε 1η φάση να τραβήξεις από το HashMap την εγγραφή χρησιμοποιώντας το groupPosition (θα τραβήξεις το ArrayList) Σε 2η φάση να βρεις τον αριθμό στο ArrayList χρησιμοποιώντας το childPos Επεξ/σία 17 Μαΐου 2017 από SakislolGR 1
bazinga13 Δημοσ. 17 Μαΐου 2017 Μέλος Δημοσ. 17 Μαΐου 2017 Καλύτερα που το κάνεις πιο απλό με HashMaps χωρίς να φτιάξεις καν κλάση Contact. Οπότε αυτό που σου μένει να κάνεις είναι: Σε 1η φάση να τραβήξεις από το HashMap την εγγραφή χρησιμοποιώντας το groupPosition (θα τραβήξεις το ArrayList) Σε 2η φάση να βρεις τον αριθμό στο ArrayList χρησιμοποιώντας το childPos Θα το προσπαθησω,σ ευχαριστω για τις συμβουλες
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα