以下のような例を見てみましょう。
package xliiv.sandbox;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.LinearLayout;
import android.widget.TableLayout;
import android.widget.TableRow;
import android.widget.TextView;
public class Double_tablesActivity extends Activity {
static final String TAG = "MAIN";
LinearLayout lay;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
LinearLayout lay = new LinearLayout(this);
this.lay = lay;
for(int i=0; i<2; i++) {
boolean heading = (i == 0) ? true: false;
add_table(heading, "" + i);
}
this.lay.setOrientation(1);
setContentView(lay);
}
public void add_table(boolean heading, String text) {
TableLayout t = new TableLayout(this);
TableRow tr = new TableRow(this);
TextView tv = new TextView(this);
tv.setText(text);
if (heading == true) {
tv.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
TextView tv = (TextView) v;
Log.i(TAG, "onclick: " + tv.getText());
//TODO: sort 2nd table denpends on which col of first table was clicked
//??
}
});
}
tr.addView(tv);
t.addView(tr);
lay.addView(t);
}
}
1番目のテーブルでクリックされた列に応じて2番目のテーブルを並べ替えたいですか?メソッドtable.sort(col)があるとします。getRootView()を見つけたので、それを使用して2番目のテーブルに移動できますが、手動で検索するよりも良い方法があるはずです。
アップデート
midoalagebの答えの後、ここに作業バージョンの上位コードがあります。
package xliiv.sandbox;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.LinearLayout;
import android.widget.TableLayout;
import android.widget.TableRow;
import android.widget.TextView;
public class Double_tablesActivity extends Activity {
static final String TAG = "MAIN";
LinearLayout lay;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
LinearLayout lay = new LinearLayout(this);
this.lay = lay;
for(int i=0; i<2; i++) {
boolean heading = (i == 0) ? true: false;
add_table(heading, "" + i);
flipper.setTag("tag" + i);
}
this.lay.setOrientation(1);
setContentView(lay);
}
public void add_table(boolean heading, String text) {
TableLayout t = new TableLayout(this);
TableRow tr = new TableRow(this);
TextView tv = new TextView(this);
tv.setText(text);
if (heading == true) {
tv.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
View root = (View) getRootView();
View view_by_tag = (View) root.findViewWithTag("tag2");
Log.i(TAG, "found table: " + flipper);
}
});
}
tr.addView(tv);
t.addView(tr);
lay.addView(t);
}
}