我使用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);
}
}
答案 0 :(得分:4)
您需要做的就是在该视图上禁用 focus
,您的视图将在第一次点击时做出反应。
在 XML 中
<androidx.appcompat.widget.AppCompatEditText
android:id="@+id/edit_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:focusable="false" <!--this line does the magic -->
android:gravity="top" />
在 Java 中
EditText editText = findViewById(R.id.username);
editText.setFocusable(false);
在科特林
val editText = findViewById<EditText>(R.id.edit_text)
editText.isFocusable = false
答案 1 :(得分:3)
使用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
}
});
答案 2 :(得分:2)
使用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;
}
});
答案 3 :(得分:0)
您无法在Edittext中正确使用click事件。因为您的第一次单击像光标焦点侦听器一样收到。因此,您必须使用onTouch listener
或尝试了另一种黑客攻击
喜欢
<ReleativeLayout
.
.
<Edittext
..
/>
/>
在这里,您必须将click方法写入相对布局。您可以实现自己的目标