0

我正在尝试做一些非常简单的事情:创建一个常见问题列表视图,当点击一个问题时,答案会出现在一个文本视图中。我为问题和答案创建了两个字符串数组,每个元素都被列为一个项目。有 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 回答