EditText上的OnEditorActionListener不起作用?

时间:2017-09-16 08:40:09

标签: android-recyclerview retrofit actionlistener

我正在搜索字符串,当我点击搜索图标时它的工作正常,我得到一个列表..但是当我点击键盘搜索图标API没有点击它的节目失败每次因为它无法获得参数.i搜索但我无法得到解决方案,而且我想知道什么是actionid。请建议我。我的代码在这里: - 。

public class Medicine_search_price extends AppCompatActivity {
    public static RecyclerView Recycle_medicine;
    Search_medicine model;
    ImageView search_medicine1, Medicine_cart, backarrow;
    public static ImageView noproduct;
    List<Result> mArray_patient_deatil = new ArrayList<Result>();
    public static EditText edit_search_medicine;
    Adapter_medicine_view medicine;
    public static TextView mTitle;
    String user_id, count, search_medicine;
    RelativeLayout relativeLayout;
    LinearLayout mainlayout;
    ProgressBar progressBar;
    Dialog dialog;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_medicine_search_price);

        DATAGET();
        FINDVIEWBYID();
        CLICKLISTINER();

    }

    private void DATAGET() {
        user_id = M.getNumber(getApplicationContext());
        count = M.getStatus(getApplicationContext());
    }

    private void FINDVIEWBYID() {

        noproduct = (ImageView) findViewById(R.id.no_product_found);
        progressBar = (ProgressBar) findViewById(R.id.proress_bar);
        backarrow = (ImageView) findViewById(R.id.medicine_search_price_arrow);
        edit_search_medicine = (EditText) findViewById(R.id.search_medicine_txt);
        search_medicine1 = (ImageView) findViewById(R.id.search_medicine_b);
        Recycle_medicine = (RecyclerView) findViewById(R.id.rcy_medicine_search);
        relativeLayout = (RelativeLayout) findViewById(R.id.badge_layout1);
        Toolbar toolbarTop = (Toolbar) findViewById(R.id.toolbar);
        mTitle = (TextView) toolbarTop.findViewById(R.id.badge_notification_1);
        mainlayout = (LinearLayout) findViewById(R.id.mainLayout);
        Medicine_cart = (ImageView) toolbarTop.findViewById(R.id.medicine_search_cart);

    }

    private void CLICKLISTINER() {

        mTitle.setText(count);

        relativeLayout.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                Intent mIntent = new Intent(Medicine_search_price.this, Preview_screen.class);
                startActivity(mIntent);

            }
        });

        search_medicine1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                search_medicine = edit_search_medicine.getText().toString();

                if (search_medicine.length() <= 2) {
                    Toast.makeText(Medicine_search_price.this, "Please Enter Atleast Three Characters", Toast.LENGTH_SHORT).show();

                } else {
                    InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
                    imm.hideSoftInputFromWindow(mainlayout.getWindowToken(), 0);

                    getdata(search_medicine);

                }

            }
        });

        backarrow.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent mIntent = new Intent(Medicine_search_price.this, MainActivity.class);
                startActivity(mIntent);
            }
        });

        edit_search_medicine.setOnEditorActionListener(new TextView.OnEditorActionListener() {
            @Override
            public boolean onEditorAction(TextView textView, int actionid, KeyEvent keyEvent) {

                if (actionid== EditorInfo.IME_ACTION_SEARCH) {
                    getdata(search_medicine);
                }

                return false;
            }
        });

    }

    private void getdata(String search) {


        progressBar.setVisibility(View.VISIBLE);
        RestAdapter restAdapter1 = new RestAdapter.Builder().setEndpoint(AppConst.MAIN).build();
        final UsersAPI searchmedicine = restAdapter1.create(UsersAPI.class);

        searchmedicine.pproducts(search, new Callback<FinalSearchMedicine>() {
            @Override
            public void success(FinalSearchMedicine searchmedicineModel, Response response) {


                Integer status = searchmedicineModel.getSuccess();

                if (status == 1) {


                    mArray_patient_deatil = searchmedicineModel.getResult();
                    Recycle_medicine.setVisibility(View.VISIBLE);
                    medicine = new Adapter_medicine_view(Medicine_search_price.this, mArray_patient_deatil);
                    LinearLayoutManager layoutManager1 = new GridLayoutManager(Medicine_search_price.this, 2);
                    Recycle_medicine.setLayoutManager(layoutManager1);
                    Recycle_medicine.setAdapter(medicine);
                    Toast.makeText(Medicine_search_price.this, "" + mArray_patient_deatil.size() + " " + "Products", Toast.LENGTH_SHORT).show();

                    progressBar.setVisibility(View.GONE);
                }
            }

            @Override
            public void failure(RetrofitError error) {


                Toast.makeText(Medicine_search_price.this, "Failureeeee", Toast.LENGTH_SHORT).show();
                progressBar.setVisibility(View.GONE);
            }
        });
    }
}

1 个答案:

答案 0 :(得分:1)

我得到了我的回答这么愚蠢的错误。 search_medicine每次都为null,因为无法从动作按钮上的编辑文本中获取字符串单击..

 if (i == EditorInfo.IME_ACTION_SEARCH) {

                    search_medicne=edit_search_medicine.getText().toString();
                    getdata(search_medicne);
                }