2017-01-22 2 views
1

Je développe un exemple d'application pour comprendre comment les données de bouclage dans une table devraient fonctionner.Obtenir par programme des données de lignes sélectionnées

Les prochains défis auxquels je suis confronté est comment puis-je obtenir les données en tapant sur des lignes particulières.

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> 

programme simple

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

      rows.setOnClickListener(new View.OnClickListener() { 
       public void onClick(View v) { 
        TableRow t = (TableRow) v; 
        TextView firstTextView = (TextView) t.getChildAt(0); 
        String firstText = firstTextView.getText().toString(); 
        Log.d("GuideActivity", firstText); 
       } 
      }); 
     } 
    } 
} 

Je suis en mesure de boucler un 100 lignes de données allant de

Je suis dans la ligne 0

Je suis en ligne 1

Je suis en ligne 2

..

..

Je suis dans la ligne 99

Cependant, est-il un moyen d'obtenir obtenir les données que j'avais mis sur écoutes sur la rangée?


FILET FERMÉ. RÉPONSE A ÉTÉ MISE À JOUR DANS MA QUESTION.

+0

peut-être en train d'enregistrer un onClickListener sur le textview? Qu'est-ce que tu penses? – Lino

Répondre

0

Je pense que vous avez besoin quelque chose comme ceci:

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

Sources de réponse: How do I get values from a dynamically created android TableRow?

How to get selected row object from Table in Android?

Si cela vous aidera - voter pour cette réponse. J'ai besoin d'augmenter ma réputation sur Stackoverflow :)

+0

salut puis-je savoir d'où vient le (i)? –

+0

J'ai mis à jour mes réponses avec la solution complète –

+0

TextView firstTextView = (TextView) t.getChildAt (i); - c'est votre compteur de cycles –