0

私はまだ Android 開発の初心者であり、私の考えているスキーマを使用して、質問をできるだけ明確にしようとします。

このアプリケーションの目的:
- ユーザーがいくつかのボタンから選択できるようにし、それらのいずれかをクリックすると、ボタンに応じて異なるコンテンツのリスト ビューが開きます。例:「Category_1」ボタンをクリックすると、適切な ID を持つ要素のみがリストビューに表示されます。

これまでのところ、私は次のことを行っています:
- 「ハンドラー」クラスを定義しました (SQLiteOpenHelper を拡張します): DB の名前/パス、CRUD の定義、.getReadableDatabase など
- テーブルのクラスを定義します。ゲッター/セッターとコンストラクター。- ボタンの空のリスナーで MainActivity を定義しました。
- データベースと通信して必要な情報を取得するメソッド/SQL リクエストを定義する「DatabaseAdapter.java」を定義しました。
-これまでに表示するものが何もない状態で ListViewActivity を定義しました。

これは、アプリケーションを最適化する方法のアイデアで私が望むもののスキーマです:
スキーマ

要約すると:
- 変数を特定の値に設定する各ボタンのリスナーが必要です (たとえば、「1 をクリックすると、A の値を 1 に設定します」)。ListViewActivity を開きます。
- "...Adapter.java" で定義されたメソッドがデータベースにリクエストを送信し、以前に定義された変数 A を入力として持つ。- そして、ボタンをクリックすると、ListViewActivity が開き、"..Adapter.java" からメソッドが呼び出され、最終的に結果が表示されます。

では、私の質問は次のとおりです。
- まず第一に、設計はアプリケーションを高速に実行できるように十分に最適化されていますか? すべてのボタンが1つのアクティビティのみを開き、すべてのボタンに対して定義されたメソッドが1つしかないため、そうすべきだと思います。
- ListViewAcitivity から呼び出される "...Adapter.java" でメソッドを定義するのに苦労しています。入力は、ボタンをクリックしたときに取得される変数である必要がありますが、1 つのアクティビティで変数を取得する方法がよくわかりません。3 番目のアクティビティで変数を使用して結果を表示する 2 番目のアクティビティを開きます... :s
Isボタンをクリックしたときに変数を特定の値に設定し、この変数を別のクラスでメソッドの入力として使用しても問題ありませんか?

public findNameInTable(int A){  
string sql = " select NAME from MY_TABLE where CAT1 = " + A;  
c = database.rawQuery(sql, null); }  

私のアプリケーションを実現するのに役立つ可能性のある兆候、提案、またはリンクを事前に感謝します。いくつかの質問が本当に初心者に聞こえる場合は申し訳ありませんが、私は始めています!
良い一日を過ごしてください !

4

1 に答える 1

1

パート 1: 変数を他のアクティビティに渡す最善の方法は、putExtra(String, variable);. ボタンを押して変数名を変更すると、次のように呼び出すことができます。

YourNewActivityClassName var = new YourNewActivityClassName();
Intent i = new Intent(context, YourNewActivityClassName.class);
i.putExtra("name", name);
startActivity(i);

次に、作成したばかりのアクティビティで、onCreate メソッドでこれを呼び出すことができます。

Intent i = getIntent();
final String name = i.getStringExtra("name");

もちろん、これは putExtra が呼び出される前に変数が String として定義されていることを前提としています。

他の変数タイプを使用したい場合は、さまざまな get***Extra コマンドを呼び出すことができますgetIntExtra(int, defaultval)が、putExtra を使用して送信することができます。

パート 2: ボタン クリックで割り当てられた変数を使用してメソッドを呼び出す場合、これを行う最善の方法は「ホルダー クラス」を使用することであることがわかりました。このホルダーはファイナルとして定義でき、ボタンを押すと値が割り当てられます。それのスロットの。これが私の整数のホルダーです:

public class holder {
    int to;

    public void setTo(int to){
        this.to = to;
    }
    public int getTo(){
        return to;
    }
}

作成時にクラスを final としてインスタンス化し、リスト クリック リスナー内でfinal holder hold = new holder(); my を呼び出します。hold.setTo(int);データを取得したいときは、呼び出すだけでhold.getTo();整数を取得できます。

同様の投稿を次に示します: Pass value outside of public void onClick

お役に立てれば!マイク

于 2013-02-28T05:38:44.510 に答える