질문글이 길어져서 간략하게 여쭤봅니다.
구글링해서 얻은 샘플 소스로 리스트뷰 드래그/드롭을 이용해서 커스텀 리스트뷰를 만들어
드래그 드롭하고자 합니다. [순서바꾸기]
기존 소스에서는 간단히 textview로, string array 내용을 출력한 후, 그 row들을 드래그/드롭해서
순번을 바꾸는 것이었는데,
저같은 경우엔 커스텀 리스트뷰로 수정해서, 안에 textview,radiobutton등 레이아웃을 바꿧습니다.
if (convertView == null)
{
//holder = new ViewHolder();
// 타입에 따라 각기 다른 XML 리소스로 뷰를 생성한다.
//holder = new ViewHolder();
switch (type)
{
case 0:
//view = m_inflater.inflate(R.layout.customview, null);
view = m_inflater.inflate(R.layout.model_listview1, parent,false);
break;
case 1:
view = m_inflater.inflate(R.layout.model_listview2, null);
//view = m_inflater.inflate(R.layout.model_listview1, parent,false);
//EditText tv_name1 = (EditText)view.findViewById(R.id.et1);
//tv_name1.setVisibility(view.INVISIBLE);
break;
}
getview내에서 convertview==null일시, view를 추가할 때, arraylist내용을 읽어와서
인자가 0이면 layout1을 view로 추가, 1이면 layout2를 추가하도록 해서
같은 디자인의 row가 아니라 제가 원하는 두가지의 레이아웃을 마음대로 배치하도록 만들었습니다.
layout1 row
layout2 row
layout2 row 이런식으로.
문제는, 이렇게 커스텀리스트뷰로 수정하고나서 드래그/드롭을 하면 중간에 view[row가 있어야할곳]가
비어버리거나, 바꾸어도 row 순서가 변하지 않습니다.
arraylist에 수정된 내용은 정상적이네요.(즉, view 갱신이 되지 않거나 invisivible되어버림)
커스텀뷰로 바꾸면서 view가 꼬여서 그런걸까요? 소스가 길어서 첨부하지 못합니다..ㅠㅠ
혹시 이런 비슷한 현상을 겪었던 분들이 계신지요?
+
드래그,드롭을 하다가 신기한 패턴을 발견했는데..
뷰타입이 같은 녀석들끼리 붙어있을 때는 이상이 없습니다.
뷰타입이 다른 row를 드래그해서 접촉시킬 때 문제가 발생하네요.
즉,,
layout1
layout1
이 상태에선 드래그를 해도 invisible같은 현상은 발생하지 않는데..
layout1
layout2
상태에선 문제가 발생합니다. 이 상태에서 row1/2의 순번을 바꾸면
layout2
layout1[invisible상태] 가 되어버리구요,
여기서 layout1을 추가 시켜서
layout2
layout1
layout1 상태로 만든다음, 새로 추가한 이녀석을 위로 드래그하면 invisible되었던
두번째의 layout1이 다시 visible하면서 세번째로 드래그.드랍이 되네요.