Как добавить clicklistener в строку в макете таблицы


Я хочу сделать макет таблицы, в которой есть 2 строки.

в обеих строках есть одна метка и текстовое поле, когда я нажимаю 1-ю строку или 2-ю строку, откроется диалоговое окно запроса, и u введет любое значение, которое он установит на текстовом поле выбранной строки.

Пожалуйста, объясните мне, как сделать прослушиватель щелчка на строке с примером и как вызвать диалоговое окно, когда строка выбрана.

4 2

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;
}