ListView
は、TextView
,ImageView
,Checkbox
を含むカスタムを持っています。 ListView
では、条件に基づいてブロックする必要があるため、何もチェック/チェックを外す必要はありません。私がやっているリストビューの行/アイテムの位置を維持する方法は?
タスク:
Checkbox
がチェックされている場合、それはImageView
で画像を表示する必要があります。条件に基づいて
CheckBox
をチェック/有効にしたくありません。
以下はカスタムアダプター用のコードです。
public class CustomAdapter extends BaseAdapter {
private Context context;
private ArrayList<POJO> mainDataList;
private LayoutInflater inflater = null;
public CustomAdapter(Context context, ArrayList<POJO> mainDataList) {
this.context = context;
this.mainDataList = mainDataList;
inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return mainDataList.size();
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public POJO getItem(int position) {
// TODO Auto-generated method stub
return mainDataList.get(position);
}
public class Holder
{
private TextView name;
private ImageView imageView;
private CheckBox check;
}
@Override
public View getView(final int position, View view, ViewGroup parent) {
// TODO Auto-generated method stub
final Holder holder;
if (view == null) {
holder = new Holder();
view = inflater.inflate(R.layout.my_layout_file, null);
holder.name = (TextView) view.findViewById(R.id.textView_Name);
holder.imageView = (ImageView) view.findViewById(R.id.img);
holder.check = (CheckBox) view.findViewById(R.id.checkBox);
view.setTag(holder);
} else {
holder = (Holder) view.getTag();
}
holder.check.setTag(position);
if (mainDataList.get(position).isEditable()) {
holder.check.setEnabled(false);
holder.check.setClickable(false);
} else {
holder.check.setEnabled(true);
holder.check.setClickable(true);
}
}
holder.name.setText(mainDataList.get(position).getName());
holder.check.setChecked(mainDataList.get(position).isSelected());
if (mainDataList.get(position).isSelected())
holder.imageView.setImageResource(R.drawable.ic_launcher);
else
holder.imageView.setImageResource(null);
return view;
}
}
私の問題は次のとおりである:スクロールで
、
ImageView
がランダムに関わらず、TRUE状態の画像を示します。スクロールでは、項目1がチェックされないため、4-5個のリストアイテム/行アイテムがすべてチェック不可になります(私のデバイスはスクロールせずに4-5セル/行/アイテムを画面に表示します)。単純に、getView()メカニズムごとに取得します。
私は、これはリスト項目の位置やスクロールのリストビューのリサイクルを維持する問題であることを知っています。これを行う方法?モデルは、そのプロパティがtrue
に選ばれている場合、それは画像の表示にいくつかの画像リソースを設定することを意味します
if (mainDataList.get(position).isSelected())
holder.imageView.setImageResource(R.drawable.ic_launcher);
:
:
私の提案は、あなたがの面で何かをするということです。建設的なコメントを共有してください – VVB
あなたは条件付きで 'setImageResource'を呼び出しています:' else'節でそれを "クリア"する必要があります。また、その所有者を取り除きます:コードだけを壊し、そのメリットはゼロにほぼ等しい – pskink
@ pskink私の編集を参照してください – VVB