Как добавить clicklistener в строку в макете таблицы
Я хочу сделать макет таблицы, в которой есть 2 строки.
в обеих строках есть одна метка и текстовое поле, когда я нажимаю 1-ю строку или 2-ю строку, откроется диалоговое окно запроса, и u введет любое значение, которое он установит на текстовом поле выбранной строки.
Пожалуйста, объясните мне, как сделать прослушиватель щелчка на строке с примером и как вызвать диалоговое окно, когда строка выбрана.
4 ответа:
Просто дайте каждому элементу TableRow уникальный идентификатор и определите
onClick
Метод:
<TableRow android:id="@+id/one" android:onClick="rowClick">
Найдите строку по идентификатору из макета, а затем добавьте следующее В класс java
tableRow= (TableRow) findViewById(R.id.one); tableRow.setClickable(true); tableRow.setOnClickListener(onClickListener); private OnClickListener onClickListener= new OnClickListener() { public void onClick(View v) { show_dialog(); } };
Затем Вызовите Следующий Метод
public void show_dialog() { final Dialog dialog = new Dialog(getApplicationContext()); dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); dialog.getWindow(); dialog.setContentView(R.layout.yourlayout); dialog.setTitle("yor title"); dialog.setCancelable(false); final Button btnOkDialog = (Button) dialog.findViewById(R.id.ResetOkBtn); btnOkDialog.setOnClickListener(new View.OnClickListener() { public void onClick(View arg0) { } }); try { dialog.show(); } catch (Exception e) { e.printStackTrace(); } }
TableRow row1 = findViewById(R.id.row2); row1.setOnClickListener(new OnClickListener() { public void onClick(View v) { // TODO Auto-generated method stub // do any thing } }); // Method 2 ******************** TableRow row1 = findViewById(R.id.row2); row1.setonClickListner(this); public void onClicl(View v) { switch (v.getId()) { case R.id.row1: break; } }
Сначала вы должны дать вашему TableRow идентификатор в вашем xml-файле
<TableRow android:id="@+id/row1" ... >
Установите дочерние элементы вашей строки (в вашем случае TextView и EditText, вероятно) в не кликабельные
android:clickable="false"
Теперь в вашем файле java найдите tablerow с идентификатором и добавьте onClickListener
TableRow row1 = findViewById(R.id.row1); d.setOnClickListener(new OnClickListener() { public void onClick(View v) { // TODO Auto-generated method stub } });
Теперь, чтобы открыть диалог, прочитайте это
Просто предположение. Сделайте редактируемый текст кликабельным. Это может быть то, что вы действительно ищете
//if we want to applay listener on dynamic tablerow then use this //sure that perfect TablRowe tr = new TableRow(this); tr.setClickable(true); tr.setId(100);// if in loop then add 1 counter with 100 like (100+counter) at end count++ it tr.setOnClickListener(this); @Override public void onClick(View v) { switch (v.getId()) { case 100: Toast.makeText(getApplicationContext(), "100", Toast.LENGTH_SHORT).show(); break; case 101: Toast.makeText(getApplicationContext(), "101", Toast.LENGTH_SHORT).show(); break; }