0

展開可能なリストビューがあり、子をクリックするたびに、ChildPosition に従って何が開くかを決定します。ただし、問題は ChildPosition が「headre 行」に対してリセットされることです。たとえば、ヘッダー 1 とヘッダー 2 があり、両方のヘッダーに 4 つの子があります。ヘッダー 1 の下の Child1 の位置は 0 で、ヘッダー 2 の下の Child1 の位置も 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);
}

ですから、すでにご想像のとおりです。ヘッダー 1 の下の子をクリックすると、正しい URL が表示されますが、ヘッダー 2 の下の子をクリックし始めると、その位置が 0 にリセットされ、「ケース 0」の URL が再び表示されます。これを修正するにはどうすればよいですか?

4

1 に答える 1

0

In your onChildClick() there is also parameter int groupPosition, but you have it as int arg2.

Then you can pass groupPosition as extras and decide also by groupPosition which url to load.

See the documentation of OnChildClickListener: http://developer.android.com/reference/android/widget/ExpandableListView.OnChildClickListener.html

于 2013-09-04T11:12:13.287 に答える