2012-04-30 4 views
1

は、私はこのように同じ画面上で2つのリストビューを、持っていることを想像してみてください。その接続は、線を使用して表す必要があります。2つの異なるListViewの2つの要素間の接続を同じ画面に表示するにはどうすればいいですか?</p> <p><img src="https://i.stack.imgur.com/y2TgC.png" alt="2 ListViews on the same screen"></p> <p>だから、今、私は右の内の1つの要素に左から一つの要素を接続したい:

左側のアイテムは右側のアイテムに接続できます。左から1つのアイテムは複数の権利に接続でき、1つの権利は1つだけ残すことができます(この種の制限はありますが、最初の問題が解決すれば簡単です)。

ユーザーが両方のリストをスクロールでき、スクロール後にその接続を再描画する必要があることを考慮すると、これを行う方法はありません。また、画面に表示されていない項目(スクロールされている項目)との接続には何らかの表現が必要です。

これを行う方法についてのご意見はありますか?

EDIT

接続がその混乱することがないように各項目のサイズは大きくなります。 maxでは一度に5-6の接続があります。

+0

でdrawLines()を使用することができますが、それぞれの間に一つだけの接続があります左右の列の項目ですか? (つまりitem1Left - > item7Rightのみ、item1Left < - item7Rightのみ) – Sam

+0

接続点を固定小数点にして、スクロールで変わらないようにする方法はありますか? –

+0

@Sam複数の接続を持つことができます。左のすべてのアイテムは、右のすべてのアイテムに接続できます。また、左から1つの項目は、右からいくつかに接続することができます。 –

答えて

1

あなたが接続する各アイテムの中心点を取得し、その後、android.graphics.canvas

drawLines

view.getLocationOnScreen

+0

ビューが画面外にあるときに 'view.getLocationOnScreen'は何を返しますか? また、最初のリストビューに追加する必要があるxがわかりますので、右端から2番目のリストビューに線を描画できますか? 最後に、誰かがスクロールを使用するときに、すべての行を更新する方法が必要です。 –

+0

ビューが画面外にある場合に返される内容がわかりません。試行錯誤を使用することを決定する必要があります。端までは、ビューのgetMeasuredWidthを使用して、適切な数式を実行する必要があります。そして、リストビューのonTouchEventをオーバーライドすれば、おそらくベスト・ベットになるでしょう。 –

+0

私が今得られる唯一の問題は、ユーザーがスクロールして、接続されたビューが画面から外れることです。 'getLocationOnScreen'は、ビューの距離に応じていくつかの奇妙な値を返します... –

0

スクロールの有無に関わらず、すべての接続がどこにあっても読みにくいように、すべての接続をマッピングします。反対側の列への各接続を強調表示する各アイテムにclickListenerを設定すると、読みやすくなりますが、すべての接続を一度に1つずつ表示するには、すべてのアイテムをクリックする必要があります。

+0

この項目は、テスト/スパイクの目的では小さいです。最後の結果では、私はその時点で4-5のアイテムを持つつもりです。私は本当にすべての項目に触れることなく、項目間の接続を確認する必要があります。 –

関連する問題