Android Edit Text OnClicklistener не работает в первый раз при нажатии - PullRequest
0 голосов
/ 03 сентября 2018

Я написал функцию, используя метод onClick для EditText, загрузил данные в RecycleView. При нажатии EditText загрузите все данные в AlertBox, а если щелкните один. Затем загрузите все данные в RecycleView в соответствии с ним. В первый раз он не отображается, но снова я нажимаю EditText и выбираю данные из AlertBox, затем показываю детали в RecycleView

activity_day_plan.xml

<EditText
        android:id="@+id/txtline"
        android:layout_width="156dp"
        android:layout_height="33dp"
        android:clickable="true"
        android:focusable="false"
        android:focusableInTouchMode="false"

        android:layout_marginEnd="8dp"
        android:layout_marginStart="8dp"
        android:layout_marginTop="12dp"
        android:background="@drawable/input"
        android:ems="10"
        android:inputType="textPersonName"
        android:textAlignment="center"
        app:layout_constraintEnd_toStartOf="@+id/btnview"
        app:layout_constraintStart_toEndOf="@+id/txtfactoryname"
        app:layout_constraintTop_toBottomOf="@+id/txtfac" />

Основная деятельность

private EditText addline;

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_day_plan);

    addline=(EditText)findViewById(R.id.txtline);

    addline.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            getlist();
        }
    });
}

public void getlist()
{
    arrayList.clear();
    if(addfac.getText().equals(""))
    {
        Toast.makeText(DayPlanActivity.this,"Please Select Factory Code",Toast.LENGTH_SHORT).show();
    }
    else if(addline.getText().equals(""))
    {
        Toast.makeText(DayPlanActivity.this,"Please Select Line Code",Toast.LENGTH_SHORT).show();
    }
    else {
        loadingbar.setMessage("Loading All Line Details");
        StringRequest stringRequest = new StringRequest(Request.Method.POST, Constants.GETDALYDETAILS_URL,
                new Response.Listener<String>() {
                    @Override
                    public void onResponse(String response) {
                        try {
                            JSONArray jsonArray = new JSONArray(response);
                            for (int i = 0; i < jsonArray.length(); i++) {
                                JSONObject jsonObject = jsonArray.getJSONObject(i);
                                String hourcode1 = jsonObject.getString("hour_code");
                                String prodqty = jsonObject.getString("qrytime");
                                String datetime = jsonObject.getString("hourqty");
                                gethourdetails gethour = new gethourdetails(hourcode1, prodqty, datetime);
                                arrayList.add(gethour);
                            }
                            adapter = new ContactAdapter(arrayList);
                            recyclerView.setAdapter(adapter);
                            loadingbar.dismiss();
                        } catch (JSONException e) {
                            e.printStackTrace();
                        }
                    }
                }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                Hours.setText("Something Went Wrong Please Try again later....");
                error.printStackTrace();
            }
        }) {
            protected Map<String, String> getParams() throws AuthFailureError {
                Map<String, String> params = new HashMap<String, String>();
                params.put("username", username);
                params.put("qno", qno);
                return params;
            }
        };
        stringRequest.setRetryPolicy(new DefaultRetryPolicy(
                60000,
                DefaultRetryPolicy.DEFAULT_MAX_RETRIES,
                DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
        MySingleton.getInstance(getApplicationContext()).addToRequestque(stringRequest);
    }
}

Ответы [ 3 ]

0 голосов
/ 03 сентября 2018

Используйте onTouchListener вместо onClickListener

addline.setOnTouchListener(new OnTouchListener() {
    @Override
    public boolean onTouch(View v, MotionEvent event) {
        if(event.getAction() == MotionEvent.ACTION_UP) {
            getlist();
            return true;
        }
        return false;
    }
});
0 голосов
/ 03 сентября 2018

Используйте onFocusChangeListener вместо onClickListener:

yourEditText.setOnFocusChangeListener(new View.OnFocusChangeListener() {
       @Override
       public void onFocusChange(View view, boolean b) {
             if (b)
                // do your stuff here if b is true
       }
});
0 голосов
/ 03 сентября 2018

Вы не можете правильно использовать событие click для редактирования текста. Потому что ваш первый клик получает как слушатель фокуса курсора. Таким образом, вы должны использовать onTouch listener или вы пытались другой взлом

как

<ReleativeLayout
.
.

   <Edittext
   ..
    />

/>

Здесь вы должны записать метод щелчка в относительное расположение. Вы можете достичь своей цели

...