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

需要调用后OnclickListener逻辑完整displaySchedule()。 – Vasant

+0

刚刚发现的clickListener工作,但不是如我所料,它的工作只是如果我点击两次快,我不知道为什么寿 – Taivna

+0

而不是使循环定义'setOnClickListener'的,使用静态定义像'所有的EditText editTexts [3] [4] .setOnClickListener(clickListener);'会工作。尝试一下。 –

您是如何检查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; 

    } 
} 
+0

我clickListener正在显示一个对话框,所以没有必要对其进行测试,当我第一个点击的EditText第一次它的工作原理,当我关闭该对话框并再次点击,它不会工作,在其他29个edittexts,该clicklistener完全不 – Taivna

+0

工作能否请你告诉我有关的完整代码? –

+0

我已经添加了更多的代码 – Taivna