2013-04-10 1 views
0

ListFragment의 ListView 위에 ListView를 추가하려고합니다 (My Fragment extends ListFragment).ListView 항목 위에 ListView 항목을 추가하여 ListView 항목을 스크롤하십시오.

나는 ListView에 항목을 넣기 위해 어댑터를 사용하고 있습니다.

내가 달성 할 수없는 것은 다른보기 (이 경우 TextView는 괜찮을 것입니다)를 넣는 것입니다.이 항목은 목록 항목 위에 나타나며 스크롤됩니다.

Fragment 수퍼 클래스를 Fragment로 변경하고 TextView와 ListView를 사용하여 레이아웃을 추가하려고 시도했습니다. 그런 식으로 TextView는 ListView 요소를 스크롤하지 않습니다.

또한 ScrollView를 추가하고 TextView와 ListView를 그 안에 넣으려고했지만 ListView는 스크롤하지 않습니다.

또한 수동으로 ListFragment의 ArrayAdapter에 개체를 추가하려고 시도했으나 (처음 시도 였음) ListView Item Layout을 적절하게 변경했지만 문제는 그것이 나타나지 않는다는 것입니다. 왜).

도움을 주시면 감사하겠습니다. 고맙습니다!

답변

3

ListView.addHeaderView()을 사용해야합니다.

XML에서는이 작업을 수행 할 수 없습니다.

public View onCreateView(LayoutInflater li, ViewGroup vg, Bundle b) 
{ 
    ViewGroup result = (ViewGroup) super.onCreateView(li, vg, b); 
    TextView tv = new TextView(this); 
    tv.setText("lalala"); 
    ListView lv = result.findViewById(android.R.id.list); 
    lv.addHeaderView(tv); 
    return result; 
} 
+0

Ok! 그거야. 그러나 단지 시각적으로! 항목의 데이터가 서로 바뀝니다. 첫 번째 항목에서 두 번째 목록 항목의 데이터이고 목록 머리글은 첫 번째 목록 항목의 데이터입니다 ... – Tigger

+0

데이터를 가져 오는 위치에 따라 다릅니다. 어댑터는 알고있는 데이터만을 리턴합니다. ListView에서 getAdapter()를 호출하거나 ListView.getItemAtPosition()을 사용하면 Adapter를 호출하기 전에 항목 위치를 오프셋하는 자체 내부 어댑터를 사용합니다. –

+0

이것은 도움이되지만 내가 말했듯이, 시각적으로 옳은 것처럼 보이지만 목록 항목 데이터를 첫 번째 항목에서 목록 머리글로, 두 번째 항목부터 첫 번째 항목으로 바꿔서 문제를 해결하지는 않습니다. setListAdapter (MyListAdapter)를 사용하여 설정 한 사용자 지정 어댑터가 있습니다. 첫 번째 문제는 onResume ListFragment 메소드에서 setListAdapter를 작성해야한다는 사실입니다. 이것은 호출 된 다른 조각에서이 조각으로 돌아 왔을 때 onResume 메서드에서 Header를 추가하려고 시도한 다음 응용 프로그램이 불어납니다. – Tigger