1

以下のような例を見てみましょう。

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

    }
}
4

1 に答える 1

1

データベースからテーブルに入力するため、より適切な実装は、2番目のテーブルをaに置き換え、aListViewを使用してSimpleCursorAdapter入力することです。

SimpleCursorAdapter(Context context, int layout, Cursor c, String[] from, int[] to)

最初のテーブルのキーを押すたびに、関連するSQLクエリCursorを使用してのクエリを再クエリします。SimpleCursorAdapterORDER BY

更新:レイアウトを変更したくない場合はView.SetTag、データを入力するときに列に一意のタグを付けるために使用できます。次にOnClickListener、最初のテーブルで、を使用View.FindViewWithTagして2番目のテーブルの列を検索し、を使用します。このテーブルをソートするためのsortメソッド。

于 2012-07-01T13:28:31.230 に答える