Если я нажму на этот флажок, это значит, что он будет снят во время прокрутки и наоборот. Также я хочу обновить фрагмент дома после щелчка по флажку. Кто-нибудь дает решение исправить эти два вопроса?Android listview with checkbox issue
customViewHolder.checkBox.setChecked(feedItem.isSelected());
customViewHolder.checkBox.setTag(position);
customViewHolder.checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
//set your object's last status
//feedItem.setSelected(isChecked);
//customViewHolder.checkBox.setTag(position);
int getPosition = (Integer) buttonView.getTag(); // Here we get the position that we have set for the checkbox using setTag.
feedItemList.get(getPosition).setSelected(buttonView.isChecked()); // Set the value of checkbox to maintain its state.
}
});
if(!feedItem.getLikedStatus().isEmpty()) {
if(feedItem.getLikedStatus().matches("liked")) {
customViewHolder.checkBox.setChecked(true);
} else {
customViewHolder.checkBox.setChecked(false);
}
}
//set Like Count
if(!feedItem.getLikedCount().isEmpty()) {
if(feedItem.getLikedCount().matches("1")) {
customViewHolder.likedUserName.setVisibility(View.VISIBLE);
customViewHolder.likedUserName.setText(feedItem.getLikedUserName());
customViewHolder.likeImageView.setVisibility(View.VISIBLE);
} else if(feedItem.getLikedCount().matches("0")) {
customViewHolder.likedUserName.setVisibility(View.GONE);
customViewHolder.likeImageView.setVisibility(View.GONE);
} else {
customViewHolder.likedUserName.setVisibility(View.VISIBLE);
customViewHolder.likedUserName.setText(feedItem.getLikedCount()+" likes");
customViewHolder.likeImageView.setVisibility(View.VISIBLE);
}
}
customViewHolder.checkBox.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(!feedItem.getLikedCount().isEmpty()) {
if(feedItem.getLikedCount().matches("0")) {
if(customViewHolder.checkBox.isChecked()) {
customViewHolder.likeImageView.setVisibility(View.VISIBLE);
customViewHolder.likedUserName.setVisibility(View.VISIBLE);
customViewHolder.likedUserName.setText(userName);
//call like url
postLikeUnlike(feedItem.getPostID(),like);
} else {
//call unlike url
customViewHolder.likeImageView.setVisibility(View.GONE);
customViewHolder.likedUserName.setVisibility(View.GONE);
postLikeUnlike(feedItem.getPostID(), unlike);
}
} else {
if(customViewHolder.likedUserName.getText().toString().matches(userName)) {
if (customViewHolder.checkBox.isChecked()) {
customViewHolder.likeImageView.setVisibility(View.VISIBLE);
customViewHolder.likedUserName.setVisibility(View.VISIBLE);
customViewHolder.likedUserName.setText(userName);
//call like url
postLikeUnlike(feedItem.getPostID(),like);
} else {
customViewHolder.likeImageView.setVisibility(View.GONE);
customViewHolder.likedUserName.setVisibility(View.GONE);
//call unlike url
postLikeUnlike(feedItem.getPostID(),unlike);
}
} else {
if (customViewHolder.checkBox.isChecked()) {
System.out.println("checkbox already checked");
customViewHolder.i = customViewHolder.i + 1;
customViewHolder.likedUserName.setText(String.valueOf(customViewHolder.i) + " likes");
//call like url
postLikeUnlike(feedItem.getPostID(),like);
} else {
System.out.println("i1 value" + customViewHolder.i);
customViewHolder.i = customViewHolder.i - 1;
customViewHolder.likedUserName.setText(String.valueOf(customViewHolder.i) + " likes");
//call unlike url
postLikeUnlike(feedItem.getPostID(),like);
}
}
}
}
}
});
Используй разреженный массив Логического помнить ваше состояние флажка. – Skynet
Это из-за просмотра утилизации. Вам нужно проверить состояние проверки и присвоить правильное состояние вашему флажку в методе getView. –
Возможно, вы не используете ViewHolder правильно. Поскольку вы скрыли часть своего кода, который инициализирует ViewHolder, я не могу рассказать вам больше. – Anonymous