2016-10-18 10 views
-2

テキストを設定しながら、私はヌル点の例外を取得しています上の「空android.widget.TextView.setText(java.lang.CharSequence)」仮想メソッドを呼び出そうと(RecyclerViewは).. nullオブジェクト参照

リサイクルビューのための私の断片

public class Product_Manual_Frag extends Fragment implements View.OnClickListener { 

    //Database 
    DBHelper db; 
    Cursor myCursor = null; 
    View rootView; 
    // Cursor myCursor = null; 
    List<RecyclerModel> data = fill_with_data(); 


    Pos_Ability_Activity main_Activity; 

    public Product_Manual_Frag() { 
     // Required empty public constructor 
    } 

    @Override 
    public void onClick(View v) { 

    } 


    private List<RecyclerModel> fill_with_data() { 
     List<RecyclerModel> data=new ArrayList<>(); 
     data.add(new RecyclerModel("Item1","10,000","2000","$")); 
     data.add(new RecyclerModel("Item1","10,000","2000","$")); 
     data.add(new RecyclerModel("Item1","10,000","2000","$")); 
     data.add(new RecyclerModel("Item1","10,000","2000","$")); 
     return data; 

    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     rootView = inflater.inflate(R.layout.fragment_poduct_manual, container, false); 

     RecyclerView recycler=(RecyclerView)rootView.findViewById(R.id.my_recycler_view); 
     RecyclerViewAdapter adapter=new RecyclerViewAdapter(data,getActivity()); 
     recycler.setLayoutManager(new LinearLayoutManager(getContext())); 
     recycler.setAdapter(adapter); 



     // Inflate the layout for this fragment 
     return rootView; 
    } 

    @Override 
    public void onAttach(Activity activity) { 
     super.onAttach(activity); 
    } 

    @Override 
    public void onDetach() { 
     super.onDetach(); 
    } 
} 

私Recycleradapter

public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewAdapter.myViewholder> { 
    List<RecyclerModel> data = Collections.emptyList(); 
    private LayoutInflater inflater; 
    private Context context; 

    public RecyclerViewAdapter(List<RecyclerModel> list, Context context) { 
     this.context = context; 
     inflater = LayoutInflater.from(context); 
     this.data = list; 
    } 

    // Usually involves inflating a layout from XML and returning the holder 
    @Override 
    public myViewholder onCreateViewHolder(ViewGroup parent, int viewType) { 
     View view = inflater.inflate(R.layout.nav_drawer_row, parent, false); 
     RecyclerViewAdapter.myViewholder holder = new RecyclerViewAdapter.myViewholder(view); 
     return holder; 
    } 

    public void delete(int position) { 
     data.remove(position); 
     notifyItemRemoved(position); 
    } 

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

    @Override 
    public void onBindViewHolder(myViewholder holder, int position) { 


     holder.txtPname.setText(data.get(position).Itemname); //Getting exception here 

    } 




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




    class myViewholder extends RecyclerView.ViewHolder { 
     RelativeLayout rl; 
     TextView txtPname, txtorgprice, txtdisprice, txtcursym; 
     CheckBox chkbx; 

     public myViewholder(View itemView) { 
      super(itemView); 
      rl = (RelativeLayout) itemView.findViewById(R.id.relativeLayout1); 
      txtPname = (TextView) itemView.findViewById(R.id.txtPName); 
      txtorgprice = (TextView) itemView.findViewById(R.id.txtPOrgPrice); 
      txtdisprice = (TextView) itemView.findViewById(R.id.txtPDisPrice); 
      txtcursym = (TextView) itemView.findViewById(R.id.lblCurSym); 
      chkbx = (CheckBox) itemView.findViewById(R.id.chkBox); 

     } 
    } 

私のモデルクラス

public class RecyclerModel { 

    public String Itemname; 
    public String ItempOrigrice; 
    public String ItemdiscPrice; 
    public String curSym; 



    public RecyclerModel(String name, String orgprice, String DiscPrice, String currency) { 
     this.curSym = currency; 
     this.Itemname = name; 
     this.ItempOrigrice = orgprice; 
     this.ItemdiscPrice = DiscPrice; 

    } 

私のフラグメントのxml

<?xml version="1.0" encoding="utf-8"?> 
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:background="@drawable/app_bg"> 

    <android.support.v7.widget.RecyclerView 
     android:id="@+id/my_recycler_view" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:scrollbars="vertical" /> 
</RelativeLayout> 

私row_xml

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/relativeLayout1" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content"> 


    <ImageView 
     android:id="@+id/imgIcon" 
     android:background="@drawable/cashback" 
     android:layout_width="50dp" 
     android:layout_height="50dp" 
     android:layout_alignParentLeft="true" /> 

    <TextView 
     android:id="@+id/txtPName" 
     android:text="Item name sample" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_toRightOf="@+id/imgIcon" /> 

    <TextView 
     android:id="@+id/txtPOrgPrice" 
     android:text="10,000 " 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_below="@+id/txtPName" 
     android:layout_toRightOf="@+id/imgIcon" /> 

    <TextView 
     android:id="@+id/lblCurSym" 
     android:text="$" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_below="@+id/txtPOrgPrice" 
     android:layout_toRightOf="@+id/imgIcon" /> 

    <TextView 
     android:id="@+id/txtPDisPrice" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_below="@+id/txtPOrgPrice" 
     android:layout_toRightOf="@+id/lblCurSym" 
     android:paddingBottom="2dp" 
     android:paddingRight="2dp" 
     android:paddingTop="2dp" 
     android:text="2,000 " 
     android:textColor="#83410e" 
     android:textSize="14sp" /> 

    <CheckBox 
     android:id="@+id/chkBox" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentRight="true" 
     android:layout_centerVertical="true" /> 


</RelativeLayout> 

私はsomething.?Pleaseポイントに私がやっているのミスをしないのです。

+0

チェックを使用する方法についてのより多くのアイデアを取得するためにいくつかの研究を行うnullポインタexecption

を取得するためにバインドされています。 –

答えて

0

R.layout.nav_drawer_row おそらくtxtPnameがnullです。

+0

私の更新された回答を確認してください.Row_xmlはすでに利用可能です。 –

+0

コードをデバッグしてtxtPnameを確認してください。 –

+0

デバッガはonBindViewHolderメソッドを使用していません。 –

0

これを試してみてください:

@Override 
public myViewholder onCreateViewHolder(ViewGroup parent, int viewType) { 
    View view = inflater.inflate(R.layout.nav_drawer_row, parent, false); 
    RecyclerViewAdapter.myViewholder holder = new RecyclerViewAdapter.myViewholder(view); 
    return holder; 
} 

代わり

@Override 
public myViewholder onCreateViewHolder(ViewGroup parent, int viewType) { 
    View view = inflater.inflate(R.layout.my_row_xml, parent, false); 
    RecyclerViewAdapter.myViewholder holder = new RecyclerViewAdapter.myViewholder(view); 
    return holder; 
} 

そうであれば、この操作を行います。ここでは、この方法は

@Override 
public myViewholder onCreateViewHolder(ViewGroup parent, int viewType) { 
View itemView= inflater.inflate(R.layout.nav_drawer_row, parent, false); 
RecyclerViewAdapter.myViewholder holder = new RecyclerViewAdapter.myViewholder(itemView); 
    holder.rl = (RelativeLayout) itemView.findViewById(R.id.relativeLayout1); 
    holder .txtPname = (TextView) itemView.findViewById(R.id.txtPName); 
    holder .txtorgprice = (TextView) itemView.findViewById(R.id.txtPOrgPrice); 
    holder .txtdisprice = (TextView) itemView.findViewById(R.id.txtPDisPrice); 
    holder .txtcursym = (TextView) itemView.findViewById(R.id.lblCurSym); 
    holder .chkbx = (CheckBox) itemView.findViewById(R.id.chkBox); 
return holder; 
} 
class myViewholder extends RecyclerView.ViewHolder { 
RelativeLayout rl; 
TextView txtPname, txtorgprice, txtdisprice, txtcursym; 
CheckBox chkbx; 

public myViewholder(View itemView) { 
    super(itemView); 
} 
} 
+0

@ YLS –

+0

これを試してください:holder.txtPname.setText( "" + data.get(position).Itemname); プロジェクトをクリーンにして再構築してください。 – YLS

0

アダプタは

でR.layout.nav_drawer_rowを持っていますあなたのwroを参照してviewholderへのNG XMLは、あなたがrecyclerviewためhttps://developer.android.comに、あなたがテキストを設定する前に、nullをrecyclerview

+0

I.m参照正しいxml .. @mkodekar –

関連する問題