在我的自定義ListAdapter,第一次GetView()被調用時,convertView在爲NULL通過一個觀點,但第二次它是通過在爲所創建的視圖第一次。我的ListView有4行,並且所有4個同時在屏幕上。從文檔看來,convertView應該是一個已經創建的視圖,現在已經從屏幕上滾動了。我預計convertView將全部爲空,所以它會創建/膨脹4個獨立的視圖。我第一次調用getView後應該有一個convertView嗎?謝謝。ConvertView傳遞作爲這仍然是在屏幕上
在OnCreate中():
Cursor questions = db.loadQuestions(b.getLong("categoryId"), inputLanguage.getLanguageId(), outputLanguage.getLanguageId());
startManagingCursor(questions);
ListAdapter adapter = new QuestionsListAdapter(this, questions);
ListView list = (ListView)findViewById(R.id.list1);
setListAdapter(adapter);
適配器類
private class QuestionsListAdapter extends BaseAdapter implements ListAdapter{
private Cursor c;
private Context context;
public QuestionsListAdapter(Context context, Cursor c) {
this.c = c;
this.context = context;
}
public Object getItem(int position) {
c.moveToPosition(position);
return new Question(c);
}
public long getItemId(int position) {
c.moveToPosition(position);
return new Question(c).get_id();
}
@Override
public int getItemViewType(int position) {
Question currentQuestion = (Question)this.getItem(position);
if (currentQuestion.getType().equalsIgnoreCase("text"))
return 0;
else if (currentQuestion.getType().equalsIgnoreCase("range"))
return 0;
else if (currentQuestion.getType().equalsIgnoreCase("yesNo"))
return 2;
else if (currentQuestion.getType().equalsIgnoreCase("picker"))
return 0;
else if (currentQuestion.getType().equalsIgnoreCase("command"))
return 0;
else if (currentQuestion.getType().equalsIgnoreCase("datePicker"))
return 0;
else if (currentQuestion.getType().equalsIgnoreCase("diagram"))
return 0;
else
return -1;
}
@Override
public int getViewTypeCount() {
return 7;
}
public int getCount() {
return c.getCount();
}
public View getView(int position, View convertView, ViewGroup viewGroup) {
Question currentQuestion = (Question)this.getItem(position);
if (convertView == null) {
LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.question_row_text, null);
}
//setup cell
return convertView;
}
}
您對文檔的分析是正確的。你確定所有四個視圖都適合在屏幕上嗎?你能發佈一些代碼/ XML嗎? – 2011-06-07 22:23:11
我的代碼編輯...我還沒有加入,因爲該行爲是明顯的,只要GetView()被調用......所以我不能與我的GetView()的代碼... – GendoIkari 2011-06-07 22:33:10
還,列表基本上正常加載......我在屏幕上完全看到所有4行。 – GendoIkari 2011-06-07 22:34:13