2012-02-17 12 views
1

使用thisすべてのレコードをCheckBoxとして単純に追加するカスタムListAdapterを作成しようとしました。デバッグ中にアダプタに4つの予期されたレコードがすべて含まれていて、オーバーライドint Countメソッドが4を返し、オーバーライドView GetViewが4回反復すると、位置変数は常に0になり、最初のレコードを含むCheckBoxが実際に表示されます。カスタムListAdapter問題

ListViewの行のレイアウトXML

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 
    <CheckBox 
    android:id="@+id/checkItem" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content"/> 
</LinearLayout> 

にCallManager.axml

<?xml version="1.0" encoding="utf-8"?> 
<ScrollView 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 
    <RelativeLayout 
    android:id="@+id/container" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 
    <LinearLayout 
     android:id="@+id/equipLayout" 
     android:tag="equip" 
     android:layout_width="fill_parent" 
     android:orientation="horizontal" 
     android:layout_height="fill_parent" 
     android:layout_below="@id/place4" 
     android:layout_margin="8dip" 
     android:visibility="gone"> 
    <ListView 
     android:id="@+id/equipLV" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content"></ListView> 
    </LinearLayout> 
</RelativeLayout> 
</ScrollView> 

//私はScrollViewとRelativeLayoutsを持っている理由である、いくつかの他のネストされたLinearLayoutsがあります。関連性がないので、清潔さを欠いている。

CallManagement.csあなたはできるだけ多くのカスタムコードがありませんので、ArrayAdapterを使用する場合があります

public class CallManagement : Activity 
{  
    CustomListAdapter listAdapter; 

    protected override void OnCreate(Bundle bundle) 
    { 
     base.OnCreate(bundle); 

     SetContentView(Resource.Layout.CallManager); 

     ListView equipLV = (ListView)FindViewById(Resource.Id.equipLV); 
     listAdapter = new CustomListAdapter(this, callNumber.Substring(0,10)); 
     equipLV.Adapter = listAdapter; 

} 

カスタムListAdapterクラス

public class CustomListAdapter : BaseAdapter 
{ 
    Activity context; 
    External inst; 

    public List<equip> equip; 

    public CustomListAdapter(Activity context, string callNumber) 
     :base() 
    { 
     inst = new External(); 
     this.context = context; 
     this.equip = new List<equip>(); 
     this.equip = inst.popEquipLV().ToList();        
    } 

    public override int Count 
    { 
     get { return equip.Count; } 
    } 

    public override Java.Lang.Object GetItem(int position) 
    { 
     return position; 
    } 

    public override long GetItemId(int position) 
    { 
     return position; 
    } 

    public override View GetView(int position, View convertView, ViewGroup parent) 
    { 
     var item = equip[position]; 
     var view = (convertView ?? 
      context.LayoutInflater.Inflate(Resource.Layout.equipLVitem, parent, false)) as LinearLayout; 

     CheckBox checkItem = (CheckBox)view.FindViewById(Resource.Id.checkItem); 
     checkItem.Tag = GetItemAtPosition(position).unit.ToString(); 
     checkItem.Text = GetItemAtPosition(position).serial.ToString(); 

     return view; 
    } 

    public equip GetItemAtPosition(int position) 
    { 
     return equip[position]; 
    } 

} 

答えて

1

あなたは今までに入れたくないものがありますListViewScrollViewの内部にあります。それはおそらく問題です。

+0

ScrollViewを削除したようですが、ScrollViewが必要な場合はどうなりますか?それらの2つのものを一緒に働かせる方法はありませんか? – jmease

+0

あるスクロールコンテナを別のスクロールコンテナ内に置いて、両方を同じ方向にスクロールすると、どのようにスクロールするのかをどのように知ることになっていますか? 2つのスクロールコンテナには何が必要ですか? –

関連する問題