亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

NULL 指針異常錯誤應用程序在單擊回收器列表項后崩潰

NULL 指針異常錯誤應用程序在單擊回收器列表項后崩潰

墨色風雨 2022-06-15 17:06:18
我正在開發一個在 Recycle List View Holder 中顯示數據的 android 應用程序。當我單擊 Recycler View Holder 中的列表項時,應用程序崩潰。public class UserRecyclerAdapterSavedUsers extends RecyclerView.Adapter<UserRecyclerAdapterSavedUsers.UserViewHolder> {private List<User> listUsers;Context mContext;ItemClickListenerLongPressed itemClickListenerLongPressed;public UserRecyclerAdapterSavedUsers(List<User> listUsers) {    this.listUsers = listUsers;}@Overridepublic UserViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {    View itemView = LayoutInflater.from(parent.getContext())            .inflate(R.layout.item_user_recycler_second, parent, false);    return new UserViewHolder(itemView);}@Overridepublic void onBindViewHolder(UserViewHolder holder, int position) {    holder.textViewID.setText(listUsers.get(position).getUserid());    holder.textViewName.setText(listUsers.get(position).getName());    holder.textViewPassword.setText(listUsers.get(position).getPassword());    holder.textViewRole.setText(listUsers.get(position).getRole());}public void setItemClickListenerLongPressed(ItemClickListenerLongPressed itemClickListenerLongPressed){    this.itemClickListenerLongPressed=itemClickListenerLongPressed;}@Overridepublic int getItemCount() {    Log.v(UserRecyclerAdapterSavedUsers.class.getSimpleName(),""+listUsers.size());    return listUsers.size();}/** * ViewHolder class */public class UserViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {    //public AppCompatTextView ID;    public AppCompatTextView textViewID;    public AppCompatTextView textViewName;    public AppCompatTextView textViewPassword;    public AppCompatTextView textViewRole;    }}}當我單擊列表項時,它崩潰了,錯誤是由 Toast 引起的。當我刪除 toast 時,由于使用了未單擊的 try catch 項,因此出現錯誤。這是錯誤的圖像。
查看完整描述

3 回答

?
呼喚遠方

TA貢獻1856條經驗 獲得超11個贊

首先將id添加到您的父 LinearLayout 為android:id="@+id/list_view"


然后更新適配器類


public class UserRecyclerAdapterSavedUsers extends RecyclerView.Adapter<UserRecyclerAdapterSavedUsers.UserViewHolder> {


private List<User> listUsers;

Context mContext;

ItemClickListenerLongPressed itemClickListenerLongPressed;

View itemView;


public UserRecyclerAdapterSavedUsers(List<User> listUsers) {

this.listUsers = listUsers;

}



@Override

public UserViewHolder onCreateViewHolder(ViewGroup parent, int viewType)       {

itemView = LayoutInflater.from(parent.getContext())

        .inflate(R.layout.item_user_recycler_second, parent, false);


return new UserViewHolder(itemView);

}




@Override

public void onBindViewHolder(UserViewHolder holder, int position) {

holder.textViewID.setText(listUsers.get(position).getUserid());

holder.textViewName.setText(listUsers.get(position).getName());

holder.textViewPassword.setText(listUsers.get(position).getPassword());

holder.textViewRole.setText(listUsers.get(position).getRole());


}


public void setItemClickListenerLongPressed(ItemClickListenerLongPressed itemClickListenerLongPressed){

this.itemClickListenerLongPressed=itemClickListenerLongPressed;

}


@Override

public int getItemCount() {

return listUsers.size();

}


private void displayingAlertDialog() {

    //displaying alert dialog box

    AlertDialog.Builder builder = new AlertDialog.Builder(itemView.getContext());

    builder.setMessage("your toast message here...");

    builder.setCancelable(true);


    builder.setPositiveButton(

            "Ok",

            new DialogInterface.OnClickListener() {

                public void onClick(DialogInterface dialog, int id) {

                    dialog.cancel();


                }

            });


    AlertDialog alert11 = builder.create();

    alert11.show();

}


/**

 * ViewHolder class

 */

public class UserViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {


//public AppCompatTextView ID;

public AppCompatTextView textViewID;

public AppCompatTextView textViewName;

public AppCompatTextView textViewPassword;

public AppCompatTextView textViewRole;

LinearLayout layout;


public UserViewHolder(View view) {

    super(view);


    textViewID = (AppCompatTextView) view.findViewById(R.id.textViewID);

    textViewName = (AppCompatTextView) view.findViewById(R.id.textViewName);

    textViewPassword = (AppCompatTextView) view.findViewById(R.id.textViewPassword);

    textViewRole = (AppCompatTextView) view.findViewById(R.id.textViewRole);

    layout = view.findViewById(R.id.list_view);


    layout.setOnClickListener(this);

}


@Override

public void onClick(View v) {

    displayingAlertDialog();

}

}


查看完整回答
反對 回復 2022-06-15
?
月關寶盒

TA貢獻1772條經驗 獲得超5個贊

您尚未mContext在適配器類中聲明。在 Adapter 類的構造函數中可能會像這樣改變。


public UserRecyclerAdapterSavedUsers(List<User> listUsers,Context context) {

    this.mContext= context;

    this.listUsers1 = listUsers;

    user= new User();

}

和你必須改變的回收視圖活動類


UserRecyclerAdapterSavedUsers myAdapter = new RecyclerViewAdapter(yourList,this);


查看完整回答
反對 回復 2022-06-15
?
守候你守候我

TA貢獻1802條經驗 獲得超10個贊

使用 Recyclerview 項目 click like this click here

然后您可以訪問您的界面activityfragment然后您可以添加您需要的任何內容。

  • 在里面給予toast和填充不是正確的編碼方式AlertDialogAdapter


查看完整回答
反對 回復 2022-06-15
  • 3 回答
  • 0 關注
  • 134 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號