2011-12-21 4 views
-1

Я пытаюсь добавить титры на строку с помощью LazyList, первоначально созданный Федором (Lazy load of images in ListView)Как добавить заголовки в макет LazyList?

Изображение ниже является то, что я хочу сделать. Пожалуйста, помогите мне, я изо дня в день пытаюсь понять это, я бы очень признателен за это. Заранее спасибо!

enter image description here

Вот LazyAdapter.java

package com.fedorvlasov.lazylist; 

import android.app.Activity; 
import android.content.Context; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.BaseAdapter; 
import android.widget.ImageView; 
import android.widget.TextView; 

public class LazyAdapter extends BaseAdapter { 

    private Activity activity; 
    private String[] data; 
    private static LayoutInflater inflater=null; 
    public ImageLoader imageLoader; 

    public LazyAdapter(Activity a, String[] d) { 
     activity = a; 
     data=d; 
     inflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     imageLoader=new ImageLoader(activity.getApplicationContext()); 
    } 

    public int getCount() { 
     return data.length; 
    } 

    public Object getItem(int position) { 
     return position; 
    } 

    public long getItemId(int position) { 
     return position; 
    } 

    public View getView(int position, View convertView, ViewGroup parent) { 
     View vi=convertView; 
     if(convertView==null) 
      vi = inflater.inflate(R.layout.item, null); 

     TextView text=(TextView)vi.findViewById(R.id.text);; 
     ImageView image=(ImageView)vi.findViewById(R.id.image); 
     text.setText("item "+position); 
     imageLoader.DisplayImage(data[position], image); 
     return vi; 
    } 
} 

и вот item.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content"> 
    <ImageView 
     android:id="@+id/image" 
     android:layout_width="50dip" 
     android:layout_height="50dip" android:src="@drawable/stub" android:scaleType="centerCrop"/> 
    <TextView 
     android:id="@+id/text" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" android:layout_gravity="left|center_vertical" android:textSize="20dip" android:layout_marginLeft="10dip"/> 
</LinearLayout> 

ответ

0
data = new ArrayList<Item>(10); 
    data.add(new Item(100, "Sample Food1")); 
    data.add(new Item(110, "Sample Food2")); 
    data.add(new Item(120, "Sample Food3")); 
    data.add(new Item(130, "Sample Food4")); 
    data.add(new Item(140, "Sample Food5")); 
    data.add(new Item(150, "Sample Food6")); 
    data.add(new Item(160, "Sample Food7")); 
    data.add(new Item(170, "Sample Food8")); 
    data.add(new Item(180, "Sample Food9")); 
    data.add(new Item(190, "Sample Food10")); 
    data.add(new Item(200, "Sample Food11")); 
    data.add(new Item(210, "Sample Food12")); 
    adapter = new ItemListAdapter(this, data); 
    setListAdapter(adapter); 

В случае ItemListAdapter Используйте этот

public class ItemListAdapter extends ArrayAdapter<Item> 
{ 
    private LayoutInflater li; 
    public ItemListAdapter(Context context, List<Item> items) 
    { 
     super(context, 0, items); 
     li = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    } 
    @Override 
    public View getView(int position, View convertView, ViewGroup parent) 
    { 
     final Item item = getItem(position); 
     View v = convertView; 
     if (v == null) 
     { 
      v = li.inflate(R.layout.fooditem, null); 
     } 
     final TextView idView = (TextView) v.findViewById(R.id.itemId); 
     if (idView != null) 
     { 
      idView.setText("" + item.getId()); 
     } 

     final TextView captionView = (TextView) v.findViewById(R.id.itemCaption); 
     if (captionView != null) 
     { 
      captionView.setText(item.getCaption()); 
     } 
     return v; 
    } 
    @Override 
    public long getItemId(int position) 
    { 
     return getItem(position).getId(); 
    } 
    @Override 
    public boolean hasStableIds() 
    { 
     return true; 
    } 
} 
Смежные вопросы