3

s を行要素としてListView表示する aがあります。ViewPagerを使用したいのですOnItemClickListenerが、が呼び出されViewPagerません。onItemClickこれどうやってするの?

4

4 に答える 4

0

興味深いセットアップ。問題は、ViewPagerが実際のリスト要素から「盗まれた」フォーカスを持っていることです。

最初にリストアイテムビューを返すとき(たとえば、ListAdapterで)、setDescendantFocusability(FOCUS_BLOCK_DESCENDANTS)そのビューを呼び出します。

または、これをリスト要素のXMLレイアウトに直接追加します。android:descendantFocusability="blocksDescendants"

この問題の説明と解決策はここにあります。

于 2013-03-15T14:40:19.383 に答える
-1

ここでの私の回答のようなカスタム ListView 実装を使用できます: https://stackoverflow.com/a/40051801/425238

于 2016-10-14T20:53:15.363 に答える
-2

あなたのセットアップはかなり混乱しているように聞こえますが、あなたが望むように聞こえるのは、ViewPager ページの変更を監視する方法です。その場合、次を使用します

pager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
    @Override
    public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
        //actions
    }

    @Override
    public void onPageSelected(int position) {
        //actions
    }

    @Override
    public void onPageScrollStateChanged(int state) {
        //actions
    }
});

onPageSelected のように聞こえますが、これを使用して現在選択されているページ インデックスを取得できます。

ただし、リスト ビューのアイテムが選択されたときに取得したい場合は、次のようなものが必要です。

ListView listview;
listview.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
    @Override
    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
        //on item selected here
    }

    @Override
    public void onNothingSelected(AdapterView<?> parent) {
        //never had to implement personally
    }
});
于 2013-03-15T14:23:56.943 に答える