私のリストビューには若干の問題があります。すべての項目にはいくつかの情報とチェックボックスがあります。私はいくつかの奇妙な行動を発見しかし、これは罰金、私はチェックボックスを選択し、選択解除することができますなどなど多くのチェックボックスが付いているListViewアダプタ
を示しています。最初の行の最初のチェックボックスをクリックします。 ListViewが小さいので、スクロールする必要はありません。これはうまく動作します。しかし、ListViewが大きいので、すべての項目を表示するためにスクロールする必要がある場合、下部のいくつかのランダムな項目もクリックされます。 同じような振る舞いですが、リストビューの下部にあるチェックボックスをクリックしてスクロールすると、一番上にあるランダムなチェックボックスもクリックされます。私がどこかでいくつかのチェックボックスをクリックすると、同じ量のクリックされたチェックボックスがあります。私は、GetView(...)が呼び出されたときにこれが起こると考えました。その後、いくつかの新しいチェックボックスがクリックされますが、理由はわかりません。
ここにお手伝いをしてください! :)私のアダプタの
SSSCE:
public class ListViewAdapterSSCCE : BaseAdapter
{
private Activity myActivity;
private string[] someData;
private int numberOfElements;
private CheckBox[] boxes;
public ListViewAdapterSSCCE(Activity activity)
{
this.myActivity = activity;
for (int i = 0; i < numberOfElements; i++)
this.boxes[i] = new CheckBox(myActivity);
}
public void SetData(string[] someData)
{
this.someData = someData;
this.numberOfElements = someData.Length;
}
public void CheckAllBoxes(bool isChecked)
{
for (int i = 0; i < numberOfElements; i++)
this.boxes[i].Checked = isChecked;
}
public override Java.Lang.Object GetItem(int position)
{
return null;
}
public override long GetItemId(int position)
{
return 10;
}
public override int Count
{
get { return numberOfElements; }
}
public override View GetView(int position, View convertView, ViewGroup parent)
{
if (convertView == null)
{
LayoutInflater inflater = (LayoutInflater)myActivity.GetSystemService(Context.LayoutInflaterService);
convertView = inflater.Inflate(Resource.Layout.ChildrenList_item, null);
}
var itemBox = convertView.FindViewById<CheckBox>(Resource.Id.checkbox);
this.boxes[position] = itemBox;
var textView = convertView.FindViewById<TextView>(Resource.Id.item_data);
textView.Text = this.someData[position];
return convertView;
}
}
私はあなたの答えを見ました。私は問題を理解しました!それはこのようなものになると考えました。説明と素晴らしいソリューションをありがとう! –