簡體   English   中英

RecyclerView android

[英]RecyclerView android

當我打開應用程序時它不起作用為什么?

為什么這個RecyclerView不起作用,但我不知道為什么

package com.example.dell.iwantto;

import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.ViewGroup;
import android.widget.TextView;
import java.util.ArrayList;
public class NameAdapter extends RecyclerView.Adapter<NameAdapter.NameViewHolder> {
    private ArrayList<String> mData;
    public static class NameViewHolder extends RecyclerView.ViewHolder {
        public TextView mNameTextView;
        public NameViewHolder(TextView v) {
            super(v);
            mNameTextView = v;
        }
    }
    public NameAdapter(ArrayList<String> mData) {
        this.mData = mData;
    }

    @Override
    public NameAdapter.NameViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        TextView v = (TextView) LayoutInflater.from(parent.getContext())
                .inflate(R.layout.layout,parent, false).findViewById(R.id.xs);
        NameViewHolder vh = new NameViewHolder(v);
        return vh;
    }

    @Override
    public void onBindViewHolder(NameViewHolder holder, int position) {
        holder.mNameTextView.setText(mData.get(position));
    }

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

我該如何解決? 錯誤是什么? 當我試圖在手機中打開它時,為什么應用程序停止?

您的RecyclerView無法工作,因為您錯誤地將子視圖作為父視圖提供給以下代碼中的ViewHolder所需:

@Override
public NameAdapter.NameViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {

    // This is incorrect because the method need a parent view not a child view
    TextView v = (TextView) LayoutInflater.from(parent.getContext())
            .inflate(R.layout.layout,parent, false).findViewById(R.id.xs);
    NameViewHolder vh = new NameViewHolder(v);
    return vh;
}

它應該是這樣的:

@Override
public NameAdapter.NameViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    Context context = parent.getContext();
    LayoutInflater inflater = LayoutInflater.from(context);

    // inflate your layout.
    View view = inflater.inflate(R.layout.layout, parent, false);

    NameViewHolder viewHolder = new NameViewHolder(view);
    return viewHolder;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM