0

this is my adapter code:

public class DataAdapter extends RecyclerView.Adapter<DataAdapter.ViewHolder>  implements Filterable{


private ArrayList<AutoData> resultList;
private ItemClickListener itemClickListener;



public DataAdapter(ArrayList<AutoData> resultList) {
    this.resultList= resultList;
    this.itemClickListener = itemClickListener;
}

@Override
public DataAdapter.ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
    View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.item_place_card, viewGroup, false);

    return new ViewHolder(view, itemClickListener);
}

@Override
public Filter getFilter(){

    Filter filter = new Filter() {
        @Override
        protected FilterResults performFiltering(CharSequence charSequence) {
            FilterResults filterResults = new FilterResults();

            filterResults.values = resultList;
            filterResults.count = resultList.size();
            return filterResults;
        }

        @Override
        protected void publishResults(CharSequence charSequence, FilterResults filterResults) {


        }
    };
    return filter;
}
@SuppressLint("NewApi")
@Override
public void onBindViewHolder(ViewHolder viewHolder, int position) {

    viewHolder.tv_name.setText(resultList.get(position).getName());
    viewHolder.tv_address.setText(resultList.get(position).getAddress());

}

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



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

    private TextView tv_name;
    private TextView tv_address;
    private EditText editText;
    private WeakReference<ItemClickListener> itemClickListenerWeakReference;



    public ViewHolder(View view, ItemClickListener itemClickListener) {
        super(view);

        itemClickListenerWeakReference = new WeakReference<>(itemClickListener);
        tv_name = (TextView)view.findViewById(R.id.name_text_view);
        tv_address = (TextView)view.findViewById(R.id.address_text_view);
        view.setOnClickListener(this);

        editText = (EditText) view.findViewById(R.id.location_input);

    }


    Context mCon;


    MainActivity mainActivity;


    @Override
    public void onClick(View v) {


        String string = (String) tv_name.getText();
        Toast.makeText(v.getContext(), "ROW PRESSED = " + string, Toast.LENGTH_SHORT).show();
        mainActivity.etPlace.setText((string));
    }
}

when I run my app I see this Error:

java.lang.NullPointerException: Attempt to read from field 'android.widget.EditText com.example.user2.trafficmap.MainActivity.etPlace' on a null object reference at com.example.user2.trafficmap.DataAdapter$ViewHolder.onClick(DataAdapter.java:133)

how can I fix this problem?

amirreza
  • 87
  • 1
  • 1
  • 10

1 Answers1

2

Change

mainActivity.etPlace.setText((string));

to

EditText et = (EditText) getWindow().getDecorView().findViewById(R.id.etPlace); //or whatever your ID is

et.setText(your_string);

And newer name a String string.

mrid
  • 5,408
  • 5
  • 19
  • 56