簡體   English   中英

無法將值分配給RecyclerView.Adapter中的特定textView

[英]Cannot assign value to specific textView in RecyclerView.Adapter

我是android開發人員的新手,我想使用片段制作應用程序並在其中使用RecyclerView。 我收到錯誤消息,這表示我正在嘗試在null對象上使用setText。 我的代碼如下所示:

public static class ContentAdapter extends RecyclerView.Adapter<ContentAdapter.ViewHolder> {
        private static String[] newsTitle = new String[] {...};
        private static String[] newsDescs = new String[] {...};

        public ContentAdapter(ViewGroup parent) {}

        @Override
        public void onAttachedToRecyclerView(RecyclerView recyclerView) {
            super.onAttachedToRecyclerView(recyclerView);
        }

        public static class ViewHolder extends RecyclerView.ViewHolder {
            TextView titles;
            TextView descs;
            public ViewHolder(LayoutInflater inflater, ViewGroup parent) {
                super(inflater.inflate(R.layout.item_list, parent, false));
                titles = (TextView) parent.findViewById(R.id.list_title);
                descs = (TextView) parent.findViewById(R.id.list_desc);
            }
        }

         @Override
        public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
             return new ViewHolder(LayoutInflater.from(parent.getContext()), parent);
         }

        @Override
        public void onBindViewHolder(ViewHolder holder, int position) {
            holder.titles.setText(newsTitle[position]); //Here is error
            holder.descs.setText(newsDescs[position]); 
        }

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

這是一個正確的例子,如果一個視圖持有人

public static class HeaderVH extends RecyclerView.ViewHolder {

    public TextView textView;

    public HeaderVH(View view){
        super(view);
        textView = (TextView)view;
    }

}

您需要將行的View對象傳遞給Viewholder,而不是父View對象。 這是onCreateViewHolder()的示例

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

https://developer.android.com/reference/android/support/v7/widget/RecyclerView.ViewHolder.html

https://www.bignerdranch.com/blog/recyclerview-part-1-fundamentals-for-listview-experts/

暫無
暫無

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

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