Создал пользовательский просмотр списка, включающий изображение, два текстовых вида и флажок. Я могу определить флажок, который будет проверен/снят, но проблема с этим дизайном очень медленная прокрутка. Будет ли это быстрее, если я проведу его в реальном устройстве.
public class ListViewActivity extends ListActivity {
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
ArrayAdapter<Model> compositeAdapter = new CompositeAdapter(this,
getModel());
setListAdapter(compositeAdapter);
ListView lv = getListView();
lv.setFastScrollEnabled(true);
}
}
private class CompositeAdapter extends ArrayAdapter<Model> {
private final List<Model> list;
private final Activity context;
public CompositeAdapter(Activity context, List<Model> list) {
super(context, R.layout.listviewactivitylayout, list);
this.context = context;
this.list = list;
}
private class ViewHolder{
protected TextView textView1;
protected TextView textView2;
protected ImageView imageView;
protected CheckBox ckBox;
}
public View getView (int position, View convertView, ViewGroup parent) {
View view = null;
final ViewHolder vh;
if(convertView==null){
LayoutInflater li = context.getLayoutInflater();
view = li.inflate(R.layout.listviewactivitylayout, null);
vh = new ViewHolder();
vh.ckBox =(CheckBox) view.findViewById(R.id.list_view_layout_checkbox);
vh.imageView = (ImageView) view.findViewById(R.id.listView_image_view);
vh.textView1 = (TextView)view.findViewById(R.id.list_view_layout_text_view1);
vh.textView2= (TextView)view.findViewById(R.id.list_view_text_view2);
view.setTag(vh);
}
else{
view= convertView;
vh = (ViewHolder)view.getTag();
}
/**
** sending text and images to the each of the list view
**
*/
Вы загружаете изображения. который нужно обрабатывать в отдельном потоке и просто помещать в изображениеView, когда он декодируется.
вот отличный проект, который поможет вам в этом. Ленивые загрузки изображений
РЕДАКТИРОВАТЬ
взглянув на ваш код, есть несколько вещей, которые я замечаю:
Во-первых: нет места, которое вы присваиваете картине. (для этого используйте ленивый адаптер для загрузки)
Во-вторых: выбор флажка будет запутан. вам нужно следить за проверенной позицией с состоянием и перерисовывать в getView (hashmap или даже лучше разреженный массив для этого)
В-третьих, чтобы избавиться от вспомогательного представления, которое вы используете. вам это не нужно. (это рынок, как View view
в вашем коде).
Итак, если convertView==null
просто используйте convertView=inflate...
и верните его в конец.
И Четвертый как полезный совет: переместите класс адаптера в новый Java файл класса. вы уже сохраняете ссылку на активность и список, вы можете уменьшить количество кода в своей деятельности.