2012-01-30 2 views
0

Я получаю данные из mssql динамически в своей таблице. Я хочу получить значения в выбранной строке как String. Например, я хочу получить значения «99», «Yonca», «Lodi» для экрана this. Как я могу это сделать? Вот мой код Создание таблицы:Android - Получение выбранных значений строк в таблице

public void addData() 
{ 
    for(int i = 0 ; i < protokolNo.length ; i++) 
    { 
     /** 
     * Creating table row here 
     */ 
     tr = new TableRow(this); 
     tr.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT)); 

     tVProtokolNo = new TextView (this); 
     tVProtokolNo.setText(protokolNo[i]); 
     tVProtokolNo.setTextColor(Color.RED); 
     tVProtokolNo.setTypeface(Typeface.DEFAULT, Typeface.BOLD); 
     tVProtokolNo.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT)); 
     tVProtokolNo.setPadding(5, 5, 5, 5); 
     tr.addView(tVProtokolNo); 

     TextView tVAdi = new TextView(this); 
     tVAdi.setText(adi[i]); 
     tVAdi.setTextColor(Color.RED); 
     tVAdi.setTypeface(Typeface.DEFAULT, Typeface.BOLD); 
     tVAdi.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT)); 
     tVAdi.setPadding(5, 5, 5, 5); 
     tr.addView(tVAdi); 

     TextView tVSoyadi = new TextView(this); 
     tVSoyadi.setText(soyadi[i]); 
     tVSoyadi.setTextColor(Color.RED); 
     tVSoyadi.setTypeface(Typeface.DEFAULT, Typeface.BOLD); 
     tVSoyadi.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT)); 
     tVSoyadi.setPadding(5, 5, 5, 5); 
     tr.addView(tVSoyadi); 

     tl.addView(tr, new TableLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT)); 

     /** 
     * Colouring selected row 
     */ 

     tr.setOnClickListener(new View.OnClickListener() { 

       @Override 
       public void onClick(View v) { 
        v.setBackgroundColor(Color.DKGRAY); 
        v.showContextMenu(); 


       } 
      }); 
      registerForContextMenu(tr); 
    } 
} 
+0

Посмотрите на это http://stackoverflow.com/questions/4079164/unable-to-select-children-textview-of-tablerow-programmatically –

+0

Я пробовал это, но я не мог этого сделать. Не могли бы вы дать мне простой пример, ссылающийся на мой код? – ugurrrrr

+0

Вы хотите получить значения, когда вы нажимаете на них или когда вы нажимаете элемент onContextItemSelected()? что именно? –

ответ

1

Это грязная, но работает. Создать глобальную приватную переменную в классе активность называется TableRow tr1=null; , то вы можете использовать следующий код в ваш addData() метод перед тем registerForContextMenu(tr); вызова:

tr.setOnClickListener(new View.OnClickListener() { 
    public void onClick(View view) { 
     view.setBackgroundColor(Color.DKGRAY); 
    } 
    }); 

    tr.setOnLongClickListener(new View.OnLongClickListener() { 
      public boolean onLongClick(View v) { 
       tr1=(TableRow)v; //assign selected TableRow gobally 
       openContextMenu(v); 
       return true; 
      } 
     }); 

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

@Override 
    public void onCreateContextMenu(ContextMenu menu, View v,ContextMenu.ContextMenuInfo menuInfo) { 
    super.onCreateContextMenu(menu, v, menuInfo); 
     menu.add(0, v.getId(), 0, "Do YourStuff"); 

    } 
    @Override 
     public boolean onContextItemSelected(MenuItem item) { 
     int ccount= (tr1).getChildCount(); 
          String[] str =new String[ccount]; 
          for(int i=0;i<ccount;i++) 
          { 
           TextView tv = (TextView)(((TableRow)tr1)).getChildAt(i); 
           str[i]=tv.getText().toString(); //set selected text data into the String array 
          } 
          Toast.makeText(ListActivity2.this,Arrays.toString(str), 2).show(); 
     return true; 
    } 

так что в основном переменная tr1 будет размещать ваш выбранный TableRow.

Но, как все говорят, используйте ListView для таких задач, как этот, и просто используйте RelativeLayouts для строк или чего-то еще.

надеюсь, что это прояснит это abit.

+0

СПАСИБО СМОТРЕТЬ БОЛЬШЕ .. Это именно то, что я ищу. – ugurrrrr

+0

рад помочь. но вам стоит подумать о том, чтобы делать свой материал с помощью ListView, потому что он обычно обрабатывает такие вещи, как ContextMenuInfo для вашего контекстного меню. –

+0

Я новичок в Android, и я позабочусь о вашем совете. Еще раз спасибо. – ugurrrrr

1

Это лучше использовать Android ListView с пользовательским адаптером, обратитесь на ссылку ниже .... http://www.vogella.de/articles/AndroidListView/article.html

+0

Я уже использовал это в своем проекте, но я должен сделать это через макет таблицы. – ugurrrrr

Смежные вопросы