Nano Hash - криптовалюты, майнинг, программирование

Как извлечь значение дочернего элемента в расширяемом списке с помощью onChildClickListener?

У меня есть расширяемое представление списка, которое генерируется динамически, а дочерний список содержит другой набор значений, мне нужно установить onChildClickListener в дочернем списке, чтобы веб-намерение передавалось с определенным URL-адресом, содержащимся в данных каждого дочернего списка . Поэтому мне нужно получить доступ к значениям дочернего списка для каждого события OnChildClickListener.

Пожалуйста помоги!! PS: пожалуйста, прокомментируйте, если требуется какое-либо дополнительное объяснение или код.

    @Override
    protected void onPostExecute(JSONObject result)
    {
        dialog.dismiss();

        onPostCreate(new Bundle());
        List<Map<String, String>> groupData = new ArrayList<Map<String, String>>();
        List<List<Map<String, String>>> childData = new ArrayList<List<Map<String, String>>>();

        try
        {   
            JSONObject data = result.getJSONObject("data");

            else
            {
                JSONArray jarray = data.getJSONArray("data");   

                for (int i = 0; i < jarray.length(); i++)
                {
                    JSONObject obj = (JSONObject) jarray.get(i);

                    String taskId = obj.getString("taskId");    
                    String taskSub = obj.getString("taskSubject");



                    String v1= "Task Subject :"+taskSub;

                    Map<String, String> curGroupMap = new HashMap<String, String>();   
                    groupData.add(curGroupMap);   
                    curGroupMap.put(TAG,v1); 

                    List<Map<String, String>> children = new ArrayList<Map<String, String>>();      

                        Map<String, String> curChildMap = new HashMap<String, String>();   
                        children.add(curChildMap);  
                        curChildMap.put(TAG,"               "+taskId);
                        childData.add(children); 

        }
                //ADAPTER SETTINGS
                  mAdapter = new SimpleExpandableListAdapter(           
                            Search.this,               
                            groupData,       
                            android.R.layout.simple_expandable_list_item_1,       
                            new String[] { TAG },     
                            new int[] { android.R.id.text1},   

                            childData,            
                            android.R.layout.simple_expandable_list_item_2,    
                            new String[] { TAG },     
                            new int[] { android.R.id.text1 }  
                            );      
                    setListAdapter(mAdapter); 
                    getExpandableListView().setOnChildClickListener(Search.this);           
        }
        } 
        catch (JSONException je)
        {
            je.printStackTrace();
            Log.d(TAG, "Error: " + je.getMessage());
        }       
    }
}

        @Override
        public boolean onChildClick(ExpandableListView parent, View v, int groupPosition,
                int childPosition, long id) 
        {               
            Uri webpage = Uri.parse("URL"+taskId);

              //I want to add the taskId i am extracting in my dynamic expandable list in the URL, therefore each URL will be unique according to the taskId.

            Intent webIntent = new Intent(Intent.ACTION_VIEW, webpage);
            PackageManager packageManager = getPackageManager();
            List<ResolveInfo> activities = packageManager.queryIntentActivities(webIntent, 0);
            boolean isIntentSafe = activities.size() > 0;
                if (isIntentSafe) 
                {
                 startActivity(webIntent);
                }

            return true;
        }   

Ответы:


1

добавить прослушиватель для дочернего прослушивателя кликов

getExpandableListView().setOnChildClickListener(this);

добавить код для прослушивания кликов.

@Override
public boolean onChildClick(ExpandableListView parent, View v, int groupPos, int childPos, long id) {
   // use groupPosition and childPosition to get the item data from adapter.
   return true;
}

добавьте этот код в адаптер

@Override
//gets the name of each item
public Object getChild(int i, int i1) {         
   return dataList.get(i).getArrayChildren().get(i1);
}
15.04.2013
  • Я хочу извлечь ЗНАЧЕНИЕ, хранящееся в конкретной группе и дочерней позиции. Приведенный выше код просто вернет позиции, тогда как я хочу, чтобы там хранились значения. 15.04.2013
  • Не могли бы вы опубликовать код о том, как извлечь данные из адаптера, потому что именно этот бит я ищу. 15.04.2013
  • Посмотрите на мой ответ сейчас, я его отредактировал сейчас. вы должны возвращать данные, передавая значения позиции, когда вы нажимаете на дочерний элемент. 15.04.2013
  • Я предполагаю, что i и i1 являются групповой и дочерней позицией соответственно. Нужна небольшая помощь с тем, что такое mParent, потому что он выдает ошибку, если я пытаюсь исправить там родителя расширяемого списка. 15.04.2013
  • mParent означает, что это список данных, такой как ArrayList‹Object›, передаваемый из Activity в Adapter , что вы хотите отобразить в расширяемом списке. 15.04.2013
  • Я отредактировал вопрос и добавил код, пожалуйста, посмотрите и дайте мне знать, какой может быть требуемый код. 15.04.2013
  • вы не используете CustomAdapter для всплывающих данных в представлении расширяемого списка. посмотрите этот учебник survivingwithandroid.com/2013/01/ 15.04.2013
  • Я динамически генерирую свой расширяемый список, и поэтому я использую SimpleExpandableListAdapter. 15.04.2013
  • что бы это ни было, легко получить данные при использовании пользовательского адаптера. в противном случае попробуйте любые доступные методы для получения данных из default.try, я не уверен в этом.. 15.04.2013
  • Я сократил свой код решения до String url = ***.get(groupPosition).getItemList().get(childPosition);, но я все еще не уверен, что передать вместо ***, специфичного для моего кода. Помощь! 15.04.2013
  • попробуй вот так parent.get(groupPosition).getItemList().get(childPosition);. здесь родитель означает, посмотрите на мой ответ. 15.04.2013
  • У меня тот же код и переменные, которые не работают. Тогда он не может понять функцию get() вместе с родителем. 15.04.2013
  • Даже если вы можете указать, как я могу получить доступ к динамическому значению taskId из функции onChildClickListener, это будет очень полезно! 15.04.2013
  • заходите в дискуссионный чат я вам помогу .. мое предложение лучше создать один пользовательский адаптер. в любом случае нажмите на дискуссионный чат. 15.04.2013
  • Не мочь! Мой офисный интернет не позволит этого. Не могли бы вы изучить код и предложить другой способ. Я был бы очень признателен за решение с самим SimpleExpandableListAdapter. 15.04.2013
  • чат означает только поток стека, хорошо, оставьте это. Лучше использовать пользовательский адаптер, чтобы упростить выполнение ваших требований. Попробуйте сделать это по моей ссылке выше, дайте мне знать, если у вас возникнут какие-либо проблемы. 15.04.2013
  • Я знаю, что интернет заблокирован для любых чат-порталов. Спасибо за ваше время в любом случае! 15.04.2013
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..