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

recyclerview 내의 버튼 관련 질문이 있습니다.

0 추천
package com.exam.administrator.nccc_trip;

import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.ImageView;

import java.util.ArrayList;

/**
 * Created by user on 2017-07-13.
 */

public class MaterialAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {

    private Context context;
    private ArrayList<MaterialItem> mItems;

    private int lastPosition = -1;

    public MaterialAdapter(ArrayList items, Context mContext) {
        mItems = items;
        context = mContext;
    }


    @Override
    public int getItemViewType(int position) {
        // Just as an example, return 0 or 2 depending on position
        // Note that unlike in ListView adapters, types don't have to be contiguous
        return position;
    }

    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        RecyclerView.ViewHolder holder = null;
        View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.material, parent, false);
        holder = new ViewHolder(v);
        return holder;
    }


    @Override
    public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
        mItems.get(position).setCheckPosition(position);
        final int po = mItems.get(position).getCheckPosition();
        ((ViewHolder) holder).checkBox.setText(mItems.get(position).getCheckTitle());
        ((ViewHolder) holder).deleteButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                mItems.remove(po);
            }
        });
    }


    @Override
    public int getItemCount() {
        return mItems.size();
    }


    public final static class ViewHolder extends RecyclerView.ViewHolder {
        public CheckBox checkBox;
        public Button deleteButton;

        public ViewHolder(View view) {
            super(view);

            checkBox = (CheckBox) view.findViewById(R.id.material_check);
            deleteButton = (Button) view.findViewById(R.id.material_bbutton);

        }
    }
}

이렇게 하면 삭제 버튼을 누르면 해당 뷰가 없어지는게 아니고 마지막에 추가한 게 삭제가 되는데 아마 final 값을 보내서 그런거 같기는한데 이걸 어떻게 바꿀 방법이 생각 나질 않아요 ㅠㅠ 

익명사용자 님이 2017년 7월 15일 질문

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...