代码之家  ›  专栏  ›  技术社区  ›  Sekhar Bhetalam

如何在Android中从表中获取选定的行对象?

  •  0
  • Sekhar Bhetalam  · 技术社区  · 12 年前

    我正在使用以下代码创建一个有3行的表。现在,我需要的是每当用户选择一行时,我只想Toast所选行的值。这是一个示例应用程序,实际上我有一个向量,并且以表格格式显示向量值。我想实现一些onItemSelected或一些东西,每当用户在表行上进行选择时,我都需要获得该对象。

    有人能帮忙吗。

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    
        TableLayout table = (TableLayout) findViewById(R.id.TableLayout01);
           table.removeAllViews();
    
           String[] valuesList = {"1","2","3"};
           for(int i=0;i<3;i++)
           {
                TableRow row = new TableRow(this);
                // count the counter up by one
                row.setLayoutParams(new LayoutParams(100,100));
                // create a new TextView
                TextView t = new TextView(this);
                t.setTextColor(Color.BLACK);
                // set the text to "text xx"     
                String value = valuesList[i];
                t.setText(value);
                row.setOnClickListener(new View.OnClickListener() {
                    public void onClick(View view) {
                        view.setBackgroundColor(Color.DKGRAY);
                    }
                    });
    
    
                View v = new View(this);
                v.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.FILL_PARENT, 1));
                v.setBackgroundColor(Color.rgb(51, 51, 51));
    
                // add the TextView and the CheckBox to the new TableRow
    
                TableLayout.LayoutParams tableRowParams=
                          new TableLayout.LayoutParams
                          (TableLayout.LayoutParams.FILL_PARENT,200);
    
                        int leftMargin=10;
                        int topMargin=5;
                        int rightMargin=10;
                        int bottomMargin=5;
    
                tableRowParams.setMargins(leftMargin, topMargin, rightMargin, bottomMargin);
    
                row.setLayoutParams(tableRowParams);
                row.addView(t);
    
                // add the TableRow to the TableLayout
                table.addView(row);//,new TableLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
                table.addView(v);
           }
    }
    

    非常感谢。

    1 回复  |  直到 12 年前
        1
  •  0
  •   Nezam    12 年前

    您可能需要这样做:

     row.setOnClickListener(new View.OnClickListener() {
                    public void onClick(View view) {
                     Toast.makeText(getApplicationContext(), "value was "+value, 
                      Toast.LENGTH_LONG).show();
                        view.setBackgroundColor(Color.DKGRAY);
                    }
                    });