나는 많은 시간이 이미 요청되었습니다. 하지만 많은 솔루션을 시도한 후에는 성공적으로 구현할 수 없습니다.목록 항목 업데이트를위한 ListView 어댑터 onClickListener
나는 여러 개의 View
을 포함하는 맞춤 레이아웃 목록을 만들고 있습니다. 보기 중 하나는 ImageView
이며 사용자가 클릭 할 때마다 아이콘이 변경되기를 원합니다. 다음과 같이 내가 사용
ListAdapter 클래스는 다음과 같습니다
public class PetitionListAdapter extends BaseAdapter {
ViewHolder holder = null;
private LayoutInflater inflater;
private ArrayList<CustomObject> objects;
private class ViewHolder {
ImageView ivsign;
}
public PetitionListAdapter(Context context, ArrayList<CustomObject> objects) {
inflater = LayoutInflater.from(context);
this.objects = objects;
}
public int getCount() {
return objects.size();
}
public CustomObject getItem(int position) {
return objects.get(position);
}
public long getItemId(int position) {
return position;
}
public View getView(final int position, View convertView, ViewGroup parent) {
if (convertView == null) {
holder = new ViewHolder();
convertView = inflater.inflate(R.layout.petition_list_layout_beta, null);
holder.ivsign = convertView.findViewById(R.id.ivsign);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.ivsign.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ImageView img = v.findViewById(R.id.ivsign);
img.setImageResource(R.drawable.icon_after_click);
}
});
return convertView;
}
}
을 이렇게,에 ClickListener 작동하지만, 대신 특정 이미지 뷰, 그것은 임의의 행에 많은 imageviews의 아이콘을 변경합니다. 내가보기에 그것 때문에 알아 .Holder. 그러나 이것을 어떻게 올바르게 할 수 있습니까?
는 I 사용했다 : -
imgViewArray [위치] = holder.textView1;
"onListItemClickListener"내에 있습니다. 이 작업을 수행하면 원하는대로 해당 위치의 아이콘이 변경되지만 스크롤하고 다시 해당 행으로 돌아온 후에 기본 아이콘으로 다시 변경됩니다. 행이 재활용 될 수 있기 때문입니다.
: 당신은 당신의
CustomObject
에 뭔가를 항목의 위치를 저장해야합니다. – codeFreak