2012-04-30 1 views
1

내가이 같은 화면에 2 개의 ListView를 가지고 있다고 상상해보십시오. 그 연결은 선을 사용하여 표현되어야합니다.동일한 화면에서 두 개의 서로 다른 ListView의 두 요소 사이에 연결을 표시하는 방법은 무엇입니까?</p> <p><img src="https://i.stack.imgur.com/y2TgC.png" alt="2 ListViews on the same screen"></p> <p>그래서, 지금은 오른쪽에 하나 개의 요소 왼쪽에서 하나 개의 요소를 연결하려면 :

왼쪽의 모든 항목은 오른쪽의 항목에 연결할 수 있습니다. 왼쪽에서 한 항목은 여러 권한에 연결할 수 있으며 한 권리는 한 번만 남을 수 있습니다 (이러한 종류의 제한이 있지만 첫 번째 문제가 해결되면 간단해야 함).

사용자가 두 목록을 모두 스크롤 할 수 있고 스크롤 한 후 연결을 다시 그려야한다는 것을 고려해 볼 수있는 방법이 없습니다. 또한 화면에없는 항목 (스크롤 된 항목)과의 연결에는 어떤 종류의 표현이 있어야합니다.

어떻게해야합니까?

편집

연결이 혼동되지 않도록 각 항목의 크기가 커집니다. 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가 무엇인지 알 수 있으므로 두 번째 목록보기로 오른쪽 가장자리에서 선을 그릴 수 있습니까? 마침내 ... 누군가가 스크롤을 사용할 때 모든 선을 새로 고치는 방법이 필요합니다. –

+0

보기가 화면을 벗어난 경우 반환 할 내용을 모릅니다. 시행 착오를 사용하여 결정해야합니다. 멀리 가장자리, 당신은보기의 getMeasuredWidth를 사용해야하고 적절한 수학을 할거야. 선을 그리려면 listview의 onTouchEvent를 재정 의하여 최상의 방법이 될 것입니다. –

+0

지금 얻을 수있는 유일한 문제는 사용자가 스크롤하고 연결된보기가 화면 밖으로 나올 때입니다. 'getLocationOnScreen'은 뷰의 거리에 따라 이상한 값을줍니다 ... –

0

모든 연결을 매핑하거나 스크롤하지 않고도 매핑하면 모든 곳에서 줄이 읽히기 쉽습니다. 반대쪽 열에 대한 각 연결을 강조 표시하는 각 항목에 clickListener를 설정하면 읽기 쉽지만 한 번에 하나씩 모든 연결을 보려면 모든 항목을 클릭해야합니다.

+0

이 항목은 테스트/스파이크 목적으로 작습니다. 최종 결과에서 나는 당시 4-5 개의 아이템을 갖고 자했다. 모든 항목을 건드리지 않고 항목 간의 연결을 실제로 확인해야합니다. –

관련 문제