2011-02-09 7 views
2

listView에서 첫 번째 목록 항목을 어떻게 가져 옵니까? 첫 번째 목록 항목의 TextView를 가져오고 싶습니다.Android ListView에서만 첫 번째 항목 가져 오기?

View listItem=(View)myList.getChildAt(0); 
TextView txtDep=(TextView)listItem.findViewById(R.id.txtDepart); 
txtDep.setText("Hello!"); 

을하지만 이것은 단지 첫 번째 항목에서하지만 모든 8, 16 및 그래서 항목의 텍스트를 변경되지 않습니다 나는 현재이 일을하고있다. 첫 번째 (맨 위) 항목의 텍스트 만 변경하고 싶습니다. 감사합니다.

+0

에 이것은 아마 때문에 방법 목록보기 작품이다. 스크롤 할 때마다 목록 맨 위에 새 항목이 있으므로 목록 맨 위에있는 현재 항목은 getChildAt (0);가됩니다. 이 작업을 올바르게 수행하려면 백그라운드에서 데이터를 변경해야합니다. 어댑터의 데이터를 변경하는 것은 경험 한 것과 정확히 일치하는 이유로 listView를 업데이트하는 가장 좋은 방법입니다. – ice911

답변

5

뷰는 그래서 당신의 텍스트 뷰 목록에서 여러 항목에 사용되는 재활용됩니다. 특정 항목이 표시되는 것을 변경하려면 ListItem 뒤에있는 데이터를 변경해야하며 ListAdapter (getView() 메소드에서)가 제공하는 데이터를 변경해야합니다. 따라서 ListView가 목록의 항목을 표시 할 때마다 어댑터는 TextView에 올바른 데이터를 표시합니다.

목록에서 데이터를 변경하거나 무엇이든간에 어댑터에서 notifyDataSetChanged()를 호출해야합니다.

+0

잘 작동합니다. 고맙습니다. – mbwasi

1

당신이 목록에서 특정 항목을 얻으려면 당신이 당신의 어댑터 클래스의 getView 방법을 통해 얻을 수있는 색상을 변경합니다.

@Override 공공보기의 getView (INT 위치보기 convertView, 뷰 그룹의 부모) {나를 위해

if(convertView == null) 
{ 
    LayoutInflater inflater = (LayoutInflater)context 
      .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    convertView = inflater.inflate(R.layout.crewlist_row, null); 
} 

TextView firstname = (TextView)convertView.findViewById(R.id.firstname); 
firstname.setText(userArray.get(position).getFirstName()); 

return convertView; 
} 
0

같은 증상하지만 서로 다른 원인. 필자는 단편 레이아웃을 match_parent 대신 제어 된 높이로 변경하여 문제를 해결했습니다.

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="horizontal" > 

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="50dp" 
    android:orientation="horizontal" > 
관련 문제