2012-01-30 6 views
0

테이블에서 mssql의 데이터를 동적으로 가져옵니다. 선택한 행의 값을 String으로 가져 오려고합니다. 예를 들어 this 화면의 "99", "Yonca", "Lodi"값을 가져 오려고합니다. 내가 어떻게 할 수 있니? ....안드로이드 - 테이블에서 선택된 행 값을 얻는 중

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

이 더러운하지만 작업입니다 : 여기 내 만들기 테이블 코드입니다. registerForContextMenu(tr); 호출하기 전에 TableRow tr1=null; 다음 당신은 당신의 addData() 방법 내에서 다음과 같은 코드를 사용할 수 있습니다라는 액티비티 클래스 에서 글로벌 개인 변수를 만듭니다

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