0

私は非常に単純なことをしようとしています: よくある質問のリストビューを作成し、質問をクリックすると回答がテキストビューに表示されます。質問と回答用に 2 つの文字列配列を作成し、各要素を項目としてリストします。5 つの q と 5 つの a があります。現在、質問はリストビューに正しく表示されていますが、onclick が機能していません。なにが問題ですか??

package freq.asked;

import android.app.ListActivity;
import android.os.Bundle;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.TextView;

public class FreqActivity extends ListActivity {

    @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            //displays all elements of questions array in listview
            setListAdapter(ArrayAdapter.createFromResource(getApplicationContext(),
                    R.array.questions, R.layout.main));
    }

    public void onItemClick(AdapterView<?> arg0, TextView v, int position, long id) {
        String[] ans = getResources().getStringArray(R.array.answers);
        for (int i=0; i<6; i++) {
                    //should display answer to question in textview
            v.setTag(ans[i]);
        }
    }
}
4

2 に答える 2

1

間違った方法を使用していると思われますonListItemClick()。代わりに試してください:

protected void onListItemClick(ListView l, View v, int position, long id) {

例:

public class FreqActivity extends ListActivity {
    String[] ans;
    String[] questions;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        ans = getResources().getStringArray(R.array.answers);
        questions = getResources().getStringArray(R.array.questions);
        //displays all elements of questions array in listview
        setListAdapter(ArrayAdapter.createFromResource(getApplicationContext(),
                R.array.questions, android.R.layout.simple_list_item_1));
    }

    protected void onListItemClick(ListView l, View v, int position, long id) {
        ((TextView) v).setText(questions[position] + ": " + ans[position]);
    }
}

ansユーザーが行をクリックするたびに を取得する必要はありません。onCreate()


「質問」をクリックした後にのみ新しいアクティビティを開始したい場合は、これを次のように使用しonListItemClick()ます。

Intent i = new Intent(this, AnswerActivity.class);
i.putExtra("answer", ans[position]);
startActivity(i);

このデータの読み取り方法については、Android アプリケーションのアクティビティ間でデータを渡すにはどうすればよいですか? を参照してください。

于 2012-09-19T20:53:02.707 に答える
0

メソッド onItemClick を次のように置き換えて使用してください。

protected void onListItemClick(ListView l, View v, int position, long id) {
    // TODO Auto-generated method stub
    super.onListItemClick(l, v, position, id);
}
于 2012-09-19T20:57:29.610 に答える