以编程方式获取选定的行数据

时间:2017-01-22 12:50:00

标签: android android-tablelayout

我正在开发一个示例应用程序,以了解表中的循环数据应该如何工作。

我面临的下一个挑战是如何在点击特定行时获取数据。

XML

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_profile"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="com.singatour.touristattraction.ProfileActivity">
    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
        <TableLayout
            android:id="@+id/tlGuide"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="left">


        </TableLayout>
    </ScrollView>
</LinearLayout>

简单程序

package com.singatour.touristattraction;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TableLayout;
import android.widget.TableRow;
import android.widget.TextView;

public class GuideActivity extends AppCompatActivity
{
    TextView tvGuideName = null;
    TableLayout tlGuide = null;

    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_guide);

        tlGuide     = (TableLayout) findViewById(R.id.tlGuide);

        for(int i  = 0; i < 100; i++)
        {
            TableRow rows = new TableRow(this);
            TableRow.LayoutParams lp = new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT);
            rows.setLayoutParams(lp);

            tvGuideName =  new TextView(this);
            tvGuideName.setId(i);
            tvGuideName.setText("I am in row " + i);
            rows.addView(tvGuideName);

            tlGuide.addView(rows, i);
        }
    }
}

我能够循环100行数据,范围从

我在第0行

我在第1行

我在第2行

...

...

我排在第99行

但是,有没有办法获取我在点击行时设置的数据?

1 个答案:

答案 0 :(得分:1)

我认为你需要这样的东西:

 tr = new TableRow(this);
    tr.setOnClickListener(new View.OnClickListener() {
       public void onClick(View view) {
          TableRow t = (TableRow) view;
          TextView firstTextView = (TextView) t.getChildAt(i);
          String firstText = firstTextView.getText().toString();
       }
    });

答案来源: How do I get values from a dynamically created android TableRow?

How to get selected row object from Table in Android?

如果它会帮助你 - 投票给这个答案。我需要提高我在Stackoverflow上的声誉:)