2016-04-10 3 views
-1

Ich möchte jedes Element anzeigen, das in eine andere textView geklickt wird. Ich habe jeden Klick im selben textView angezeigt, aber ich möchte auf jeden Klick für die Daten in einem neuen textView angezeigt werden. Irgendwelche Ideen? hier ist das, was ich bisher:listview info in verschiedenen textviews anzeigen

 ExercisesListView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
      private String result; 
      TextView Exercise1TextView = (TextView) findViewById(R.id.Exercise1TextView); 
      TextView Exercise2TextView = (TextView) findViewById(R.id.Exercise2TextView); 


      @Override 
      public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) { 

       String Exercise = String.valueOf(adapterView.getItemAtPosition(i)); 
       result = (Exercise1TextView.getText().toString() + "\n" + Exercise); 
       Exercise1TextView.setText(result); 

      } 


     }); 

Antwort

1

Die Antwort auf Ihre Frage ist, Sehr einfach, Sie müssen neue TextViews dynamisch erstellen und ihnen Text zuweisen. So sollten Sie fortfahren. Fügen Sie ein lineares Layout in Ihrem Hauptlayout oberhalb oder unterhalb Ihrer Listenansicht hinzu, wo immer Sie möchten, genau wie unten.

<LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:orientation="vertical" 
      android:id="@+id/main_layout" 
     /> 

In Ihrer Aktivität initialisieren dieses Linearlayout

public class MainActivity extends Activity { 

      private LinearLayout mainLayout; 

      @Override 
      protected void onCreate(Bundle savedInstanceState) { 
        super.onCreate(....); 
        setContentView(....); 
        this.mainLayout = (LinearLayout) findViewById(R.id.main_layout); 
      } 
    } 

Jetzt in Ihrem onItemClick wie dies zu tun.

TextView tv = new TextView(getApplicationContext()); 
    LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT); 
    tv.setTextColor(Color.BLACK); 
    tv.setText(result); 
    mainLayout.addView(tv, params); 
+0

muss es lineares Layout sein? Ich habe bereits ein relatives Layout eingerichtet. Danke für die Hilfe – Ryan159

+0

@ user3091082 Sie können jedes beliebige Layout hinzufügen, der obige Code wird gut funktionieren. Jedes Layout hat seine addView-Methode. LayoutParams unterscheiden sich jedoch. Anstelle von LinearLayout.LayoutParams benötigen Sie RelativeLayout.LayoutParams –

+0

ok danke für die Hilfe – Ryan159

0

eine Reihe von Textviews wie das Erstellen:

View[] myViews = {textView1, textView2, ....}; 

Und sie innerhalb onItemClick nennen()

@Override 
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) { 

    k = myViews.length < i ? myViews.length -1 : i; //or use your logic 
    String Exercise = String.valueOf(adapterView.getItemAtPosition(i)); 
    result = (Exercise1TextView.getText().toString() + "\n" + Exercise); 
    myViews[k].setText(result); 

} 
+0

Danke für die schnelle Antwort. Ich verstehe, was Sie zu tun versuchen, aber ich verstehe diese Zeile nicht vollständig, k = myViews.length Ryan159

+0

"i" bedeutet Ihre Position in der Listenansicht. Ich gab dies für ein Beispiel, Sie sollten Ihre Logik dort verwenden. Und wenn Sie sich fragen wollen, was ich dort gemacht habe, habe ich die Position des Objekts angeklickt und die myViews [Position des angeklickten Objekts] aufgerufen. Wenn die Anzahl der Aufrufe kleiner ist als die Listenelemente, werden die myViews [letztes Element] aufgerufen. Es ist verkürzte Version von wenn sonst Bedingung. Übrigens habe ich Fehler in meiner Antwort korrigiert. sieh es dir nochmal an. – uguboz