2017-09-16 32 views
0

我正在搜索一个字符串,当我点击搜索图标其工作正常,我得到一个列表..但是当我点击键盘搜索图标API没有击中其显示每次失败,因为它不能得到一个parameter.i搜索,但我无法获得解决方案,我也想知道什么是actionid。请给我建议。我的代码在这里: - 。EditText上的OnEditorActionListener不起作用?

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); 
      } 
     }); 
    } 
} 

回答

0

我得到我的答案如此愚蠢的错误。 search_medicine每次都为空,因为无法从编辑文本中获取字符串,只能点击操作按钮。

if (i == EditorInfo.IME_ACTION_SEARCH) { 

        search_medicne=edit_search_medicine.getText().toString(); 
        getdata(search_medicne); 
       } 
相关问题