2013-11-18 3 views
1

Я вызываю CustomAdapter класс, который расширяет класс и вызывает из другого класса, но как метод getView из класса CustomAdapter будет вызываться? Я не могу понять ... Пожалуйста помочь мне ..как метод getview класса baseadapter вызван

public class CustomAdapter extends BaseAdapter { 
Context mContext; 
public String[] sText = { "this", "that", "yellow" }; 
public String bText = "hello"; 
public Integer[] images = { R.drawable.s_1, R.drawable.s_2, R.drawable.s_3, }; 

public CustomAdapter(Context context) { 
    super(); 
    this.mContext = context; 
} 

@Override 
public int getCount() { 
    // TODO Auto-generated method stub 
    return sText.length; 
} 

@Override 
public Object getItem(int arg0) { 
    // TODO Auto-generated method stub 
    return null; 
} 

@Override 
public long getItemId(int arg0) { 
    // TODO Auto-generated method stub 
    return sText.length; 
} 

@SuppressLint("NewApi") 
@Override 
public View getView(int position, View convertView, ViewGroup parent) { 

    // TODO Auto-generated method stub 

    LayoutInflater inflater = ((Activity) mContext).getLayoutInflater(); 
    View customRow = inflater.inflate(R.layout.lview, null); 
    ImageView image = (ImageView) customRow.findViewById(R.id.imageView1); 
    TextView smalltext = (TextView) customRow.findViewById(R.id.textView1); 
    TextView bigtext = (TextView) customRow.findViewById(R.id.textView2); 
    image.setImageResource(images[position]); 
    image.setAdjustViewBounds(true); 
    image.setMaxHeight(50); 
    smalltext.setText(sText[position]); 
    bigtext.setText(bText); 
    return customRow; 
} 

} 
+1

Возможно, эта презентация [ListView GoogleIO] (http://www.youtube.com/watch?v=wDBM6wVEO70) принесет немного света ... Это около 45 минут, но это определенно стоит посмотреть на нее. – gunar

ответ

1

how getView method of CustomAdapter class will be invoked?

Это простой вопрос, который имеет сложный ответ. Вы фактически не вызываете этот метод напрямую, но Android ListView (или любая реализация AdapterView) вызовет это для вас. Этот метод будет вызываться, когда представление элемента списка будет готово к отображению или отображению. Возможно, правильным ответом было бы указать вам ListView, AbsListView и AdapterView исходных кодов, но я уверен, что у вас недостаточно времени для просмотра и понимания этого кода.

Так что ответ, который я вам даю, - это начать с знаменитой презентации GoogleIO, The world of ListView. Это объясняет, как работает ListView, как он перерабатывает свой взгляд, лучшие практики и анти-шаблоны.

После того, как вы просмотрите эту презентацию, вы увидите, что getView должен заканчиваться как можно быстрее, иначе ListView будет работать, и пользовательский интерфейс будет низким. Таким образом, вы можете реализовать шаблон ViewHolder и повторно использовать второй параметр от getView.

Смежные вопросы