多くの例を見てきましたが、私の問題によるものはありません...私の場合、カスタムアダプターを備えたカスタムリストビューがあります。チェックボックスexは主に非表示になり、オプションメニューボタンをクリックするとチェックボックスが表示され、フォーカス可能性もtrueに設定されますリストビューはリスト項目のクリックリスナーを受信しなくなりました...チェックボックスの状態をSparseBooleanArrayに保存するコードもありますが、最大の問題は、チェックボックスのチェックを呼び出さないため、getView ()にあるため、チェック状態が誤って保存されることですたとえば、リストビューに最初に5つのアイテムがある場合... パブリックビューからの位置 getView(int position,View convertView,ViewGroup parent)私のコードでは、最後のアイテムが6の位置にあるため、6になります。
@Override
public View getView(final int position,View convertView,ViewGroup parent)
{
//currentPosition=position;
Log.v("Position",""+position);
Log.v("ConvertView", ""+convertView);
View row=convertView;
if(row==null)
{
LayoutInflater inflater=((Activity)context).getLayoutInflater();
row=inflater.inflate(layoutResourceId, parent,false);
holder=new Feedbacks();
holder.lvGuestName=(TextView)row.findViewById(R.id.guestName);
holder.checkBox=(CheckBox)row.findViewById(R.id.clearCheck);
holder.checkBox.setOnCheckedChangeListener(new OnCheckedChangeListener()
{
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
{
if(isChecked)
{
checks.put(position, true);
System.out.println("checking at pos:"+position);
}
else
{
checks.put(position, false);
System.out.println("unchecking at pos:"+position);
}
}
});
row.setTag(holder);
}
else
{
holder=(Feedbacks)row.getTag();
}
if(showCheckbox)
{
holder.checkBox.setVisibility(View.VISIBLE);
}
else
{
holder.checkBox.setVisibility(View.GONE);
}
holder.lvGuestName.setText(feedbackList.get(position).getGuestName());
holder.checkBox.setChecked((checks.get(position)));
System.out.println("seting check at pos:"+position);
return row;
}
}
チェックボックスがチェックされている/チェックされていないときにgetView()が呼び出されないため、それぞれの位置を取得できないため、現在、 0の位置のアイテムを
クリックしても位置が6になります... iリストアイテムのクリックでチェックボックスのフォーカス可能性がfalseで簡単に実行できることを知っていますが、新しいことを学びたいと思っているので、リストビューでチェックされたそれぞれのチェックボックスの位置を取得するにはどうすればよいですか? ...どんな種類の助けも私にとって最も高く評価され、価値があります...前もって感謝しますif(isChecked)
{
checks.put(position, true);
System.out.println("checking at pos:"+position);
}checks.put(position,true);