0

今回は私の質問への回答が得られることを願っています。私はすでにこれについて質問を投稿しましたが、適切に配置されていなかったため、人々はそれを見落としていたと思います。ここに私の以前の質問へのリンクがあります。ボタンのクリック時に同じ親でビューを複数回膨張させていますか? ボタンクリックイベントのメインアクティビティに TextView を含む 3 つの LinearLayouts を持つ TableLayout を含む child.xml を膨らませています。ユーザーは必要な数のビューを追加できます。

しかし、異なるビューが TextView の同じ ID を共有しているため、これらの textviews または setOnClickListeners からデータを収集する方法について混乱しています。

膨張したビューに適切なタイプを追加して参照をリストに保存することで、膨張したビューでfindViewByIdを使用するよう提案されましたが、膨張した最初のビューに対してのみOnClickListenerを設定できます。

私がやっていることを達成することさえ可能かどうか知りたかったのですか? 別の投稿で、findViewById は、検索できるビューの最初の可能なインスタンスを検索することを読みました。それは私の場合の問題ですか?

私のコードスニペットを見てください

TextView[] tv=new TextView[l.size()]; 
for(int i=0;i<tv.length;i++){ 
tv[i]=(TextView)l.get(i).findViewById(R.id.mdsnew_type_sp); 
tv[i].setOnClickListener(new View.OnClickListener() { 
@Override 
public void onClick(View v) { 
showDialog(DATE_DIALOG_ID); } 
});
 //I have also tried this
 public void getData(){ 
 for(int i=0;i<l.size();i++){ 
 tv1=(TextView)l.get(i).findViewById(R.id.mdsnew_type_sp);
  }

しかし、最初の TextView に対してのみ setOnClick Listener を使用でき、残りはすべて無視されます。

これは、アクティビティと同様のシナリオを膨張させる方法を説明する別のリンクですが、情報の取得については説明されていませんボタンがクリックされたときに同じ親でビューを複数回膨張させる

事前に感謝します。

4

2 に答える 2

1

これは役立つかもしれません

LanearLayout parentLayout = (LinearLayout)findViewById(R.id.main_ll);
 int count = parentLayout.getChildCount();
        for (int i = 0; i < count; i++)
     {
        View view = mainLl.getChildAt(i);
        if (view instanceof TextView) 
            {
              int id=view.getId();
            ((TextView) view).setText(" ");

            }
    }
于 2014-01-10T06:14:25.200 に答える
1

これらTextViewsは親ViewGroup(あなたの場合は a LinearLayout)に追加されているので、親の子ビューのリストを走査し、OnClickListenerそれぞれに an を追加できます:

for (int childPos = 0; childPos < myLayout.getChildCount(); childPos++) {
    myLayout.getChildAt(childPos).setOnClickListener(new OnClickListener() {
        @Override 
        public void onClick(View v) { 
            // ...
        }
    });
}
于 2011-12-14T19:25:18.703 に答える