我有一个tablelayout,其中包含以编程方式创建的表行和每行中以编程方式创建的编辑文本。通过单击按钮添加表格行,该按钮在每行中包含名为'editTextTime'的编辑文本。 'editTextTime'是可点击的,因此当您点击它时会出现一个时间选择器对话框。从时间选择器中选择时间后,它出现在'editTextTime'中。
但问题是,当选择时间时,如果选择了两行,它也会同时出现在另一个'editTextTime'中。我需要将选择后的时间设置为当前行所在的“editTextTime”中的文本,而不是出现在另一行的任何其他“editTextTime”内。我该怎么做呢?
答案 0 :(得分:0)
问题(我想)是你将所有EditTexts命名为相同而setTimeToEditText函数在"编程创建代码"之外,所以,你需要为每个编辑器设置onClickListener,就像这样
更新我将发布一个以编程方式添加EditText的简单示例
public class MainActivity extends Activity {
LinearLayout myLayout;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
myLayout = (LinearLayout)findViewById(R.id.linearLayout);
for(int i=0;i<5;i++) {
final EditText myEditText = new EditText(MainActivity.this); // Pass it an Activity or Context
//Stuff to make your edittext looks nice
myEditText .setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) { //When you click on the
// Process to get Current Time
final Calendar c = Calendar.getInstance();
int mHour = c.get(Calendar.HOUR_OF_DAY);
int mMinute = c.get(Calendar.MINUTE);
TimePickerDialog tpd = new TimePickerDialog(MainActivity.this, //same Activity Context like before
new TimePickerDialog.OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker view, int hourOfDay,
int minute) {
myEditText.setText(hourOfDay + ":" + minute); //You set the time for the EditText created
}
}, mHour, mMinute, false);
tpd.show();
}
});
myLayout.addView(myEditText);
}
}
}