2011-02-09 10 views
2

listViewの最初のリストアイテムを取得するにはどうすればよいですか?最初のリスト項目のTextViewに行きたい。 私は現在、このやっている:最初のアイテムはAndroidリストビューでのみ取得できますか?

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

をしかし、これは最初のアイテムだけでなく、項目上のすべての8日、16日とそうでテキストを変更されていません。最初の(上の)項目のテキストのみを変更したいと思います。 ありがとうございます。

+0

にこれはおそらくどのようにListViewの作品です。スクロールするたびに、リストの一番上に新しい項目があるので、リストの一番上にある現在の項目はgetChildAt(0);になります。これを正しく行うには、バックグラウンドでデータを変更する必要があります。アダプターのデータを変更することは、あなたが経験した正確な理由でlistViewを更新する最良の方法です。 – ice911

答えて

5

ビューがリサイクルされています。特定の項目が表示される内容を変更する場合は、ListItemの背後にあり、ListAdapterによって(getView()メソッドで)提供されているデータを変更する必要があります。 ListViewがリストの項目を表示するたびに、アダプタはTextViewに正しいデータを表示します。

リスト内のデータを変更するときは、アダプタのnotifyDataSetChanged()を呼び出す必要があります。

+0

これはうまくいきます。 Thanx – mbwasi

1

リスト内の特定の項目を取得したいと、あなたのアダプタクラスのGetViewメソッドを介してこれを取得することができ、その色を変更したい場合。

@Override パブリックビューgetViewメソッド(int型の位置、表示convertView、のViewGroupの親){私のために

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" > 
関連する問題