2012-09-19 68 views
0

我試圖做一些非常簡單的事情:創建一個常見問題列表視圖,並且當單擊一個問題時,答案出現在一個textview中。我爲問題和答案創建了兩個字符串數組,每個元素都列爲一個項目。有5個q和5個a。現在問題在列表視圖中正確顯示,但onclick不起作用。哪裏不對??ListView 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]); 
     } 
    } 
} 
+0

哪裏有你想改變textView嗎?它是否在相同的佈局?或在另一個活動?不要使用TextView v。 – Samer

+0

嘗試打印文本視圖以檢查項目是否在點擊工作。 – Deepak

+0

您也可以覆蓋項目點擊方法。 – Deepak

回答

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

請注意,您不需要獲得每次用戶點擊一行時,您只需要在onCreate()中執行一次


如果你只婉單擊「問題」後,開始一個新的活動在onListItemClick()使用:

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

你可以閱讀有關如何讀取該數據在這裏:How do I pass data between Activities in Android application?

+0

謝謝,但那不太對。我認爲那是在列表視圖中將問題設置爲答案的文本。 – mdegges

+0

嗯,你只指定「當一個問題被點擊時,答案出現在一個文本視圖中」。這個怎麼樣?你可以添加任何你想要的格式,但是我使用':「作爲一個簡單的間隔符。 – Sam

+0

對不起,我的意思是它應該打開一個帶有textview的新頁面,並顯示答案的文字。但我想我可以弄明白這一點! – mdegges

0

請使用以下替換方法onItemClick,

protected void onListItemClick(ListView l, View v, int position, long id) { 
    // TODO Auto-generated method stub 
    super.onListItemClick(l, v, position, id); 
}