ListView
에 대한 확장 가능 항목을 생성했으며보기가 올바르게 재활용되었습니다. 문제는 이러한 항목 중 하나를 확장하면 일부 숨겨진 항목도 확장되어 명확하게 원하지 않는 항목입니다.Android ListView recycled - 확장 가능 항목
예를 들어 목록의 두 번째 위치에서 항목을 확장하면 8 번째 항목도 확장됩니다. 그 반대. 이것은 올바르게 축소되지 않은 재생 된보기입니다.
다음은 확장/축소 항목의 빠른 화면입니다.
LayoutInflater inflater = (LayoutInflater) fragment.getActivity().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
final MessageHolder holder;
if (convertView == null)
{
convertView = inflater.inflate(R.layout.test_message, parent, false);
holder = new MessageHolder();
// Retrieve layout elements
holder.card = new WeakReference<ExpandableCardLayout>((ExpandableCardLayout) convertView.findViewById(R.id.card));
holder.layout_comments = new WeakReference<LinearLayout>((LinearLayout) convertView.findViewById(R.id.layout_comments));
holder.layout_loading = new WeakReference<LinearLayout>((LinearLayout) convertView.findViewById(R.id.layout_loading));
holder.spinner_loading = new WeakReference<FlatLoadingSpinner>((FlatLoadingSpinner) convertView.findViewById(R.id.spinner_loading));
// Attach holder
convertView.setTag(holder);
}
else
{
holder = (MessageHolder) convertView.getTag();
}
// Attach listener
holder.card.get().setOnExpandListener(new OnExpandListener() {
@Override
public void onExpand()
{
handler.postDelayed(new Runnable() {
@Override
public void run()
{
// Hide loading
holder.layout_loading.get().setVisibility(View.GONE);
// Add comments
List<View> comments = buildComments(null);
for (int i=0; i<comments.size(); i++) holder.layout_comments.get().addView(comments.get(i));
}
}, 1000);
}
@Override
public void onCollapse()
{
// Remove everything
while (holder.layout_comments.get().getChildCount() > 0) holder.layout_comments.get().removeViewAt(0);
// Show loading
holder.layout_loading.get().setVisibility(View.VISIBLE);
}
});
return convertView;
내 질문은 : 어떻게 재활용 요소를 확장 할 수있는 붕괴보기를 방지하기 위해
여기내가 사용하는 코드는 이러한 항목을 만들 수있다?
안녕하세요, 답변 해 주셔서 감사합니다. 어디에서해야합니까? 저는'WeakReference'를 사용하여'ImageView'에서'Bitmap'을 처리하고 있습니다. – Manitoba
나는 그것을 독자적으로 만들었다. 당신의 도움을 주셔서 감사합니다 ! – Manitoba