0

我有可扩展的列表视图,每次单击一个孩子时,我都会根据 ChildPosition 确定要打开的内容。然而问题是 ChildPosition 为“headre row”重置。例如,我有标题 1 和标题 2,两个标题都有 4 个孩子。Child1 在 header 1 下的位置为 0,child1 在 header 2 下的位置也为 0。

这会破坏我的代码,因为我总是将 ChildPosition 作为额外内容传递给下一个活动,并且根据该 int 打开不同的 WebView。这是代码:

通过额外:

expListView.setOnChildClickListener(new OnChildClickListener(){

        @Override
        public boolean onChildClick(ExpandableListView arg0, View arg1,
                int arg2, int childPosition, long arg4) {
            //Starting intent
            Intent scheudele = new Intent(MainActivity.this, Scheudele.class);
            scheudele.putExtra("razred", childPosition);
            startActivity(scheudele);
            Log.i("TAG", "Position: " + childPosition);
            return false;
        }

    });

使用该额外加载 url:

public void getWebView(){
    razredData = getIntent();
    int position = razredData.getIntExtra("razred", 0);
    String urlToLoad = null;

    switch (position){
    case 0:
        urlToLoad = "https://www.easistent.com/urniki/izpis/263/16515/0/0/1";
        break;
    case 1:
        urlToLoad = "https://www.easistent.com/urniki/izpis/263/16520/0/0/1";
        break;
    case 2:
        urlToLoad = "https://www.easistent.com/urniki/izpis/263/16516/0/0/1";
        break;
    case 3:
        urlToLoad = "https://www.easistent.com/urniki/izpis/263/16517/0/0/1";
        break;
    case 4:
        urlToLoad = "https://www.easistent.com/urniki/izpis/263/16518/0/0/1";
        break;
    case 5:
        urlToLoad = "https://www.easistent.com/urniki/izpis/263/18222/0/0/1";
        break;
    case 6:
        urlToLoad = "https://www.easistent.com/urniki/izpis/263/18223/0/0/1";
        break;
    case 7:
        urlToLoad = "https://www.easistent.com/urniki/izpis/263/18224/0/0/1";
        break;
    case 8:
        urlToLoad = "https://www.easistent.com/urniki/izpis/263/18225/0/0/1";
        break;
    case 9:
        urlToLoad = "https://www.easistent.com/urniki/izpis/263/18215/0/0/1";
        break;
    case 10:
        urlToLoad = "https://www.easistent.com/urniki/izpis/263/18216/0/0/1";
        break;
    case 11:
        urlToLoad = "https://www.easistent.com/urniki/izpis/263/18217/0/0/1";
        break;
    case 12:
        urlToLoad = "https://www.easistent.com/urniki/izpis/263/18219/0/0/1";
        break;
    case 13:
        urlToLoad = "https://www.easistent.com/urniki/izpis/263/18220/0/0/1";
        break;
    case 14:
        urlToLoad = "https://www.easistent.com/urniki/izpis/263/18221/0/0/1";
        break;
    }

    //Loading WebView URL
    webView.loadUrl(urlToLoad);
    webView.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
}

所以,正如您已经可以想象的那样;如果我单击 Header 1 下的子项,则会显示正确的 url,但是在我开始单击 Header 2 下的子项后,它们的位置会重置为 0,并再次显示“case 0”url。我该如何解决?

4

1 回答 1

0

在你onChildClick()那里也有参数int groupPosition,但你有它作为int arg2

然后,您可以将 groupPosition 作为附加信息传递,并通过 groupPosition 决定要加载哪个 url。

参见 OnChildClickListener 的文档:http: //developer.android.com/reference/android/widget/ExpandableListView.OnChildClickListener.html

于 2013-09-04T11:12:13.287 回答