android "रीसाइक्लरदृश्य: कोई एडाप्टर संलग्न नहीं है; टुकड़ा में रीसाइक्लिव्यू के लिए लेपिंग छोड़ना "




android-fragments android-adapter (3)

इस सवाल का पहले से ही उत्तर दिया गया है:

मुझे यह त्रुटि मिल रही है लेकिन मैं नहीं जानता कि यह क्या कारण है ... शायद इस तथ्य के साथ कुछ ऐसा करना है कि यह एक टुकड़ा में शुरू किया जा रहा है और गतिविधि में ही नहीं। संपादित करें: शामिल StatsAdapter कोड

public class StatsFragment extends Fragment {

    private RecyclerView mRecyclerView;
    private LinearLayoutManager mLinearLayoutManager;
    private RecyclerView.Adapter mAdapter;
    private String[] myDataset = new String[]{"hello", "world", "yolo"};

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup parent, Bundle savedInstanceState) {
        View v = inflater.inflate(R.layout.fragment_stats, parent, false);
        mRecyclerView = (RecyclerView) v.findViewById(R.id.cardList);
        mRecyclerView.setHasFixedSize(true);
        mAdapter = new StatsAdapter(myDataset);
        mRecyclerView.setAdapter(mAdapter);
        mLinearLayoutManager = new LinearLayoutManager(getActivity());
        mLinearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL);
        mRecyclerView.setLayoutManager(mLinearLayoutManager);
        return v;
    }
}



public class StatsAdapter extends RecyclerView.Adapter<StatsAdapter.ViewHolder> {
    private String[] mDataset;

    public static class ViewHolder extends RecyclerView.ViewHolder {
        public TextView mTextView;
        public ViewHolder(View v) {
            super(v);
            mTextView = (TextView) v.findViewById(R.id.title);
        }
    }

    public StatsAdapter(String[] myDataset) {
        mDataset = myDataset;
    }

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

    @Override
    public void onBindViewHolder(ViewHolder holder, int position) {
        holder.mTextView.setText(mDataset[position]);
    }

    @Override
    public int getItemCount() {
        return mDataset.length;
    }
}

onCreate और onCreate में "गैर-दृश्य" संबंधित ऑब्जेक्ट बनाएं। फिर RecyclerView लिए अपने एडाप्टर का उपयोग करें।

साथ ही, अपने कोड और ऑब्जेक्ट को उनके उपयोग और Activity जीवनचक्र के आधार पर स्पष्ट क्रम में शुरू कर दें।

public class StatsFragment extends Fragment {

    private RecyclerView mRecyclerView;
    private LinearLayoutManager mLinearLayoutManager;
    private StatsAdapter mAdapter; // was RecyclerView.Adapter mAdapter;
    private String[] myDataset = new String[]{"hello", "world", "yolo"};

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        // 1.
        mAdapter = new StatsAdapter(myDataset);
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup parent, Bundle savedInstanceState) {
        View v = inflater.inflate(R.layout.fragment_stats, parent, false);

        // 2.
        mLinearLayoutManager = new LinearLayoutManager(getActivity());
        mLinearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL);

        // 3.
        mRecyclerView = (RecyclerView) v.findViewById(R.id.cardList);
        mRecyclerView.setHasFixedSize(true);
        mRecyclerView.setLayoutManager(mLinearLayoutManager);
        mRecyclerView.setAdapter(mAdapter);

        return v;
    }
}

इस समस्या को ठीक करने का एक तरीका रीसाइक्वेलदृश्य को रिक्त एडेप्टर संलग्न करना है

void initializeRecyclerView() {

   recyclerView = (RecyclerView) view.findViewById(R.id.recyclerView);
   recyclerView.setAdapter(new SampleAdapter(getCurrentActivity()));
   recyclerView.setLayoutManager(new LinearLayoutManager(getCurrentActivity()));
   recyclerView.setHasFixedSize(true);
}

setAdapter से पहले अपने setAdapter लाइन को स्थानांतरित करें







android-cardview