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

RecyclerView 도와주세요

0 추천

onBindViewHolder 메소드에서 textView를 바인딩 해야 하는데 textView에서 에러가 뜨네요...

예제 코드를 봐도 이상한게 없는 것 같은데 뭐가 문제인가요....?

 

public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
    private ArrayList<ItemList> itemList = new ArrayList<>();

    public class ViewHolder extends RecyclerView.ViewHolder {
        TextView textView;

        public ViewHolder(@NonNull View itemView) {
            super(itemView);

            textView = itemView.findViewById(R.id.itemTitle);
        }
    }

    RecyclerViewAdapter(ArrayList<ItemList> list) {
        itemList = list;
    }

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

    @Override
    public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
        holder.
    }

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

    public void addItem(ItemList data) {
        itemList.add(data);
    }

}

 

매력적인수박 (670 포인트) 님이 2021년 7월 16일 질문

1개의 답변

0 추천

ViewHolder 타입이 다르네요.

public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewAdapter.ViewHolder {
    private ArrayList<ItemList> itemList = new ArrayList<>();
 
    @NonNull
    @Override
    public RecyclerViewAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        ...
    }
 
    @Override
    public void onBindViewHolder(@NonNull RecyclerViewAdapter.ViewHolderholder, int position) {

    }
}

 

그리고 많이들 네이밍에 대한 중요성을 간과하시는데 클래스 이름을 님의 사용 목적에 맞게 명확하게 주세요. 해당 에러도 클래스 이름이 명확하지 못해서 생기게 된 문제입니다.

spark (226,420 포인트) 님이 2021년 7월 16일 답변
조언 감사합니다.

수정을 했음에도 불구하고 에러가 뜨는데요.. ctrl + o키를 눌러서 implements를 시켜서 나온 크래스들인데.. spark님이 써주신 것 처럼 onBindViewHolder의 파라미러터가 recyclerViewAdapter로 수정하면 에러가 나옵니다.

public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
    private ArrayList<ItemList> itemList = new ArrayList<>();

    public class ViewHolder extends RecyclerView.ViewHolder {
        TextView textView;

        public ViewHolder(@NonNull View itemView) {
            super(itemView);

            textView = itemView.findViewById(R.id.itemTitle);
        }
    }

    RecyclerViewAdapter(ArrayList<ItemList> list) {
        itemList = list;
    }

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

    @Override
    public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
        
    }
public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>
-> public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewAdapter.ViewHolder>
...