我有一个可动态生成的可扩展列表视图,并且子列表包含另一组值,我需要在子列表上设置onChildClickListener,以便将每个子列表的数据中包含的特定URL传递给Web意图。因此,我需要在每个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;
        }

最佳答案

为孩子点击监听器添加监听器

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

关于android - 如何使用onChildClickListener在expandablelistview中提取子项的值?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16007844/

10-11 00:01