2017-07-07 77 views
-3

我正在學習Android應用程序,學生可以嘗試並查看其測試。將ArrayAdapter的值傳遞給活動

我在活動的ListView中向學生顯示測試。 我也想顯示學生的總分和獲得的分數。

這是我的ArrayAdapter的getView函數。

public View getView(int position, View convertView, ViewGroup parent) { 
    Text_Questions questions = getItem(position); 
    ViewHolder v = null; 
    View view = convertView; 
    try { 
     if (convertView == null) { 
      v = new ViewHolder(); 
      convertView = LayoutInflater.from(getContext()).inflate(R.layout.text_questions_list_item, parent, false); 
      v.title = (TextView)convertView.findViewById(R.id.title); 
      v.marks = (TextView)convertView.findViewById(R.id.marks); 
      v.answer = (TextView)convertView.findViewById(R.id.answer); 
      v.std_answer = (TextView)convertView.findViewById(R.id.std_answer); 
      convertView.setTag(v); 
     } 
     else { 
      v = (ViewHolder) convertView.getTag(); 
     } 
     v.title.setText("Q: "+questions.getTitle()); 
     v.std_answer.setText("Ans: "+ questions.getStd_answer()); 
     v.answer.setText("Correct: " + questions.getAnswer()); 
     if(questions.getAnswer().toLowerCase().equals(questions.getStd_answer().toLowerCase())){ 
      v.marks.setText(""+questions.getMarks() + "/" + questions.getMarks()); 
     }else{ 
      v.marks.setText("0/" + questions.getMarks()); 
     } 
     return convertView; 
    }catch (Exception e) { 
     return null; 
    } 
} 

將項目設置爲ListView時,我想將該問題的標記傳遞給我的活動。 我沒有找到任何解決方案。 有什麼想法?

感謝您的幫助提前

回答

1

您可以在Activity創建一個公共方法如下:

public void setMarks(int marks){ 
    this.marks = marks 
} 

然後在你的ArrayAdapter,你可以做到以下幾點:

private YourActivity yourActivity; 

public YourArrayAdapter(YourActivity yourActivity) { 

    this.yourActivity = yourActivity; 

} 

然後在您的getView()

yourActivity.setMarks(marks); 
+0

謝謝,您的解決方案工作。但是我有一個問題,我在'getView()'中調用'myActivity.setMarks(marks)',但是'getView()'爲每個項目調用兩次。 – Taimoor

+1

我很高興解決方案奏效。但是,對於多次調用getView()的查詢,我建議您提出一個單獨的問題,以便當前的問題不會脫離主題。另外,如果您認爲當前問題的解決方案有效,請接受答案。謝謝 :)。此外,請仔細閱讀以下內容: https://stackoverflow.com/questions/2872996/best-way-to-handle-multiple-getview-calls-from-inside-an-adapter – sri