0

3 つの連続する ListView で構成されるレイアウトがあります。一番左のリストの項目を選択すると、2 番目のリストが開始されます。左端のリストの最初の項目を選択してフラグメントを開始しようとしていますが、多くのロジックが必要なため、すべてのロジックをやり直すのではなく、クリックでトリガーしようとしています。私はこれを使用しています:

mListView.performItemClick(mListView, 0, mListView.getItemIdAtPosition(0));

私が試みていることは可能ですか?もしそうなら、私はこれをどこで呼びますか?

答え:

したがって、これが機能しなかった理由は、行 View 内の View を手動で強調表示していて、まだインスタンス化されていない (またはそのようなもの) ためだと思われます。

ListView がレイアウトされた後、このコードを使用して呼び出しました。

mListView.post(new Runnable() {
        @Override
        public void run() {
            mListView.performItemClick(mListView, 0, mListView.getItemIdAtPosition(0));
        }
    });

編集:

インスタンス化される前に前のリストから送信されるデータに依存する 4 つのリストがありますが、何らかの奇妙な理由で、この実行可能なメソッドは最初のリストに対してのみ機能します。他の人については、 https ://stackoverflow.com/a/15399035/1549672 という回答を使用しました。また、奇妙なことに、これは最初のリストでは機能しません。すべてのリストはほぼ同じです。

4

1 に答える 1

0

以前のコメントによると:

選択の変更を にラップして、Runnableそれを にポストすることができListViewます。そうすれば、ListView(およびその子) が測定されて配置されるまで、選択の変更は発生しません。選択を変更する前に、アダプターを設定してください。

于 2013-08-20T22:41:24.327 に答える