질문 텍스트 뷰와 두 개의 버튼 (예 및 아니오)이 포함 된 목록보기를 사용하고 있습니다. 아니오 버튼을 클릭하면 다른 레이아웃이 표시됩니다. , edittext를 포함합니다. 나는 위의 코드를 사용하고보기가 안드로이드의 목록보기에서 아래로 스크롤 된 후 반복적으로 발견 된 텍스트 편집 편집 됨
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView == null) {
convertView = mInflater.inflate(R.layout.questions_list_item, null);
holder = new ViewHolder();
holder.question = (TextView) convertView
.findViewById(R.id.question);
holder.questionNo = (TextView) convertView
.findViewById(R.id.questionNo);
holder.yesBtn = (ImageButton) convertView
.findViewById(R.id.yesButton);
holder.noBtn = (ImageButton) convertView
.findViewById(R.id.noButton);
holder.subQuestionLayout = (RelativeLayout) convertView
.findViewById(R.id.subQuestionLayout);
holder.subQuestion = (TextView) convertView
.findViewById(R.id.subQuestion);
holder.subQuestionAnswer = (EditText) convertView
.findViewById(R.id.subQuestionAnswer);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
setUpListeners(holder, position);
return convertView;
}
private void setUpListeners(final ViewHolder holder, final int position) {
holder.yesBtn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
holder.subQuestionLayout.setVisibility(View.GONE);
}
});
holder.noBtn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
holder.subQuestionLayout.setVisibility(View.VISIBLE);
// set subquestions
holder.subQuestion.setText(questionsModel.get(position)
.getQuestion_subquestion().get(0).getText().toString());
}
}
}
}
});
: 다음은 목록보기 어댑터 내 코드입니다. 내가 동적 레이아웃이 보여주는 첫 번째 질문에 대한 버튼을 클릭하지 않으면 스크롤 다운을 시도했지만 같은 레이아웃이 여섯 번째 질문에도 표시됩니다. 어떻게 해결할 수 있습니까 ?? 제발 도와주세요
아니,; getView()에서 뷰가 스크롤 된 후에 이미 보이는 뷰가 보이지 않게되었습니다. – Gincy
이 경우 어댑터에 int를 추가하거나 뷰가 VISIBLE 인 항목의 위치를 보유하는 List을 추가 할 수 있습니다. getView()에서 현재 위치가 해당 위치와 일치하는지 확인하고, 가시성을 VISIBLE로 설정하면 표시 여부를 설정할 수 있습니다. –