OnClickListener是不工作的其他EditTexts除了首先,一种以多edittexts布局
问题描述:
我有30×EditTexts,我需要建立一个OnClickListener的每一个,我已经写了clickListener和下面的代码,但OnClickListener工作只有第一个EditText并且只有一次,请有人指出我的代码有什么问题? 这是我的嵌套for循环设置OnClickListener用于由6×5阵列editTexts [] []中引用的所有30个EditTexts:OnClickListener是不工作的其他EditTexts除了首先,一种以多edittexts布局
public void displaySchedule()
{
if(!dbHelper.isTableEmpty("schedule"))
{
Schedule sch = dbHelper.getSchedule();
for(int i = 0; i < 6; i++)
{
for(int j = 0; j < 5; j++)
{
editTexts[i][j].setText(sch.scheduleArray[i][j].substring(0, 3));
editTexts[i][j].setInputType(InputType.TYPE_NULL);
editTexts[i][j].setOnClickListener(clickListener);
}
}
}
}
这是我的clicListener:
View.OnClickListener clickListener = new View.OnClickListener()
{
@Override
public void onClick(View view)
{
final String names[] ={"A","B","C","D"};
AlertDialog.Builder alertDialog = new AlertDialog.Builder(ScheduleActivity.this);
LayoutInflater inflater = getLayoutInflater();
View convertView = inflater.inflate(R.layout.list_dialog, null);
alertDialog.setView(convertView);
alertDialog.setTitle("List");
alertDialog.setNegativeButton("Cancel", new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialog, int which)
{
dialog.dismiss();
}
});
ListView lv = (ListView) convertView.findViewById(R.id.lv);
ArrayAdapter<String> adapter = new ArrayAdapter<>(getApplicationContext(), android.R.layout.simple_list_item_1,
names);
lv.setAdapter(adapter);
lv.setOnItemClickListener(new AdapterView.OnItemClickListener()
{
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l)
{
Toast.makeText(getApplicationContext() ,names[i], Toast.LENGTH_SHORT).show();
}
});
alertDialog.show();
}
};
而这是设置editTexts [] []数组的方法:
public void prepareEditTexts()
{
editTexts[0][0] = (EditText) findViewById(R.id.sch_et_11);
editTexts[0][1] = (EditText) findViewById(R.id.sch_et_12);
editTexts[0][2] = (EditText) findViewById(R.id.sch_et_13);
editTexts[0][3] = (EditText) findViewById(R.id.sch_et_14);
editTexts[0][4] = (EditText) findViewById(R.id.sch_et_15);
editTexts[1][0] = (EditText) findViewById(R.id.sch_et_21);
editTexts[1][1] = (EditText) findViewById(R.id.sch_et_22);
editTexts[1][2] = (EditText) findViewById(R.id.sch_et_23);
editTexts[1][3] = (EditText) findViewById(R.id.sch_et_24);
editTexts[1][4] = (EditText) findViewById(R.id.sch_et_25);
editTexts[2][0] = (EditText) findViewById(R.id.sch_et_31);
editTexts[2][1] = (EditText) findViewById(R.id.sch_et_32);
editTexts[2][2] = (EditText) findViewById(R.id.sch_et_33);
editTexts[2][3] = (EditText) findViewById(R.id.sch_et_34);
editTexts[2][4] = (EditText) findViewById(R.id.sch_et_35);
editTexts[3][0] = (EditText) findViewById(R.id.sch_et_41);
editTexts[3][1] = (EditText) findViewById(R.id.sch_et_42);
editTexts[3][2] = (EditText) findViewById(R.id.sch_et_43);
editTexts[3][3] = (EditText) findViewById(R.id.sch_et_44);
editTexts[3][4] = (EditText) findViewById(R.id.sch_et_45);
editTexts[4][0] = (EditText) findViewById(R.id.sch_et_51);
editTexts[4][1] = (EditText) findViewById(R.id.sch_et_52);
editTexts[4][2] = (EditText) findViewById(R.id.sch_et_53);
editTexts[4][3] = (EditText) findViewById(R.id.sch_et_54);
editTexts[4][4] = (EditText) findViewById(R.id.sch_et_55);
editTexts[5][0] = (EditText) findViewById(R.id.sch_et_61);
editTexts[5][1] = (EditText) findViewById(R.id.sch_et_62);
editTexts[5][2] = (EditText) findViewById(R.id.sch_et_63);
editTexts[5][3] = (EditText) findViewById(R.id.sch_et_64);
editTexts[5][4] = (EditText) findViewById(R.id.sch_et_65);
}
答
您是如何检查View.OnClickListener的?
您应该检查View.OnClickListener如下面的代码来确认:
@Override
public void onClick(View view) {
switch (view.getId()) {
case R.id.editext1:
Log.d("Called me", "onClicked " + R.id.editext1);
break;
case R.id.editext2:
Log.d("Called me", "onClicked " + R.id.editext2);
break;
...
default:
break;
}
}
需要调用后OnclickListener逻辑完整displaySchedule()。 – Vasant
刚刚发现的clickListener工作,但不是如我所料,它的工作只是如果我点击两次快,我不知道为什么寿 – Taivna
而不是使循环定义'setOnClickListener'的,使用静态定义像'所有的EditText editTexts [3] [4] .setOnClickListener(clickListener);'会工作。尝试一下。 –