마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

listview 갱신 질문드립니다

0 추천
   public View getView(final int position, View convertView, ViewGroup parent) {
        if(convertView==null){
            convertView = LayoutInflater.from(context).inflate(R.layout.listview,null);
            telView =  (TextView)convertView.findViewById(R.id.telView);
            telView.setText(list_itemArrayList.get(position).getTel());
        }
        Button btn1 = convertView.findViewById(R.id.button1);
        btn1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                System.out.println(list_itemArrayList.remove(position).getTel());
                notifyDataSetChanged();
            }
        });
        return convertView;
    }

리스트뷰에

1    버튼

2    버튼

3    버튼

4    버튼

5    버튼

이렇게 저장 되어있다고 했을 때 3번 버튼을 누르면 3번이 지워져야하는데 화면상에서는 5번이 지워진걸로 나옵니다. println으로도 찍어보고 파일로 저장해서 확인도 해보니 실제로는 3번이 지워졌고 다시 불러올 땐 3번이 없어지는데 어째서인지 romove로 제거 후 notiffyDataSetChanged()를 호출했을 땐 5번이 지워진 것처럼 나오네요. 혹시 방법 아시는 분 없으신가요?

익명사용자 님이 2018년 3월 30일 질문

1개의 답변

0 추천
 
채택된 답변

다음 처럼 바꿔 보세요.

 

public View getView(final int position, View convertView, ViewGroup parent) {
	if(convertView==null){
		convertView = LayoutInflater.from(context).inflate(R.layout.listview,null);
	}
	 
	telView = (TextView)convertView.findViewById(R.id.telView);
	telView.setText(list_itemArrayList.get(position).getTel());
	 
	Button btn1 = convertView.findViewById(R.id.button1);
	btn1.setOnClickListener(new View.OnClickListener() {
		@Override
		public void onClick(View v) {
			System.out.println(list_itemArrayList.remove(position).getTel());
			notifyDataSetChanged();
		}
	});
	
	return convertView;
}

 

디자이너정 (42,810 포인트) 님이 2018년 4월 1일 답변
오 답변감사합니다 ㅠㅠ
...