2016-04-10 18 views
-1

別のtextViewにクリックされた各アイテムを表示したい。私はそれぞれのクリックを同じtextViewで表示していますが、新しいtextViewに表示されるデータのクリックごとに好きです。何か案は?リストビュー情報を別のテキストビューに表示するandroid

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

      } 


     }); 

答えて

1

onItemClick()内にそれらを呼び出すここでは私がこれまで持っているものです非常に簡単ですが、新しいTextViewを動的に作成し、setTextを作成する必要があります。これはあなたが進むべき方法です。下のように、必要に応じてリストビューの上または下のメインレイアウトに直線レイアウトを追加します。あなたの活動に

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

あなたonItemClickで今

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

これのLinearLayoutを初期化し、次のように行います。

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

リニアレイアウトでなければなりませんか?私はすでに相対レイアウトを設定しています。助けてくれてありがとう – Ryan159

+0

@ user3091082希望のレイアウトを追加できます。上記のコードはうまく動作します。どのレイアウトにもaddViewメソッドがあります。しかし、LayoutParamsは異なります。 LinearLayout.LayoutParamsの代わりにRelativeLayout.LayoutParamsが必要です –

+0

助けてくれてありがとう – Ryan159

0

はそのようなTextViewsの配列を作成します:

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

をそして、あなたの質問への答えは

@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

お返事ありがとうございます。私はあなたが何をしようとしているのか理解していますが、私はこの行を完全に理解していません、k = myViews.length Ryan159

+0

"i"はリストビュー内の自分の位置を示します。私はあなたのロジックをそこに使うべきであるという例を挙げました。私がそこで何をしたのか疑問に思うなら、私はアイテムの位置をクリックし、myViews [クリックしたアイテムの位置]を呼び出しました。あなたのビュー数がmyViews [last item]を呼び出すよりもリスト項目より小さい場合if else条件の短縮版です。 btw私は私の答えの間違いを訂正しました。それをもう一度見てください。 – uguboz

関連する問題