2013-04-15 5 views
1

У меня есть расширяемое представление списка, которое генерируется динамически, а дочерний список содержит другой набор значений. Мне нужно установить onChildClickListener в дочернем списке, чтобы передать веб-сайт с определенным URL-адресом, хранящимся в данных каждого дочерний список. Поэтому мне нужно получить доступ к значениям дочернего списка в каждом событии OnChildClickListener.Как извлечь значение дочернего элемента в expandablelistview с помощью 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; 
     } 

ответ

2

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

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); 
} 
+0

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

+0

Не могли бы вы опубликовать код о том, как извлечь данные из адаптера, потому что этот бит предназначен именно для них. –

+0

Посмотрите на мой ответ, теперь я был отредактирован сейчас. вам нужно вернуть данные, передав значения позиции, когда вы нажимаете на дочерний элемент. –

Смежные вопросы