0

sqlite データベースによって取り込まれたリストがあります。私がやろうとしているのは、クリックされた行の値 (行 ID ではなく文字列) を新しいアクティビティに渡すことです。たとえば、このリストがある場合...

りんご
バナナ
にんじん など
_

…そして「バナナ」をクリックすると、「バナナ」が新しいアクティビティに渡されます。これを機能させることができますが、リストの最初の項目に対してのみです。他のすべてのリスト項目も同じ値を返します (つまり、'Apples')。これが私が使用しているコードです…</p>

 private AdapterView.OnItemClickListener onListClick=new AdapterView.OnItemClickListener() {
    public void onItemClick(AdapterView<?> parent,
                            View view, int position,
                            long id) 
    Intent i=new Intent(MyApp.this, MyActivity.class);

        TextView nameValue = (TextView)findViewById(R.id.ingredientText);
        String content = nameValue.getText().toString(); 

        i.putExtra(ID_EXTRA, String.valueOf(content));

        startActivity(i);

    }
};

繰り返しますが、このコードは、クリックされた行に関係なく、'Apples' の値を返します。Android でデータベースを操作するのはまだ初めてなので、おそらくこれについて間違ったアプローチをとったのでしょう。上記のコードが間違っている理由と、それを修正する方法を教えてください。助けてくれてありがとう。

4

3 に答える 3

2

他の答えは正しいです。しかし、ビューから直接値を取得したい場合は、onItemClick に渡されたビューで findViewById を呼び出す必要があります。

public void onItemClick(AdapterView<?> parent, View view, int position, long id){
    Intent i=new Intent(MyApp.this, MyActivity.class);

    TextView nameValue = (TextView)**view**.findViewById(R.id.ingredientText);

    String content = nameValue.getText().toString(); 
    i.putExtra(ID_EXTRA, String.valueOf(content));
    startActivity(i);
}

元のコードでは、アクティビティのビュー ツリー全体で呼び出すように見えるため、同じ結果が得られ続けます。

于 2012-09-04T20:35:59.297 に答える
2

常に同じフィールドからテキストを取得します。必要なのは、選択したアイテムをTextView nameValue = (TextView)findViewById(R.id.ingredientText);使用parentpositionて取得することcontentです。

于 2012-09-04T20:32:57.257 に答える
2

そのコードを使用すると、(明らかに) 変更しない限り固定されている TextView でテキストを渡します。選択した行の値が直接必要な場合は、配列から値を取得してみませんか?

ArrayList の成果があるとしましょう。次のように簡単に実行できます。

i.putExtra(ID_EXTRA, fruits.get(position);
于 2012-09-04T20:33:33.383 に答える