2011-10-11 61 views
0

其實我想問的東西更喜歡得到一些建議,這是做我想做的事情的最佳方式。我在我的應用程序中使用了Lazy Loading List。我需要能夠將一個不同的圖像設置爲列表視圖項目,具體取決於用戶是否訂閱了該圖像。如果他不是,它會顯示一個默認圖像。如果他是真實的形象。下面是我使用的代碼:Android LazyList設置圖片問題

import android.app.Activity; 
import android.content.Context; 
import android.util.Log; 
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 static class ViewHolder{ 
     public TextView name,info; 
     public ImageView image; 
    } 

    public View getView(int position, View convertView, ViewGroup parent) { 
     View vi=convertView; 
     ViewHolder holder; 
     if(convertView==null){ 
      vi = inflater.inflate(R.layout.item, null); 
      holder=new ViewHolder(); 
      holder.name=(TextView)vi.findViewById(R.id.name); 
      holder.info=(TextView)vi.findViewById(R.id.info); 
      holder.image=(ImageView)vi.findViewById(R.id.image); 
      vi.setTag(holder); 
      Log.v("",""+position); 
     } 
     else 
      holder=(ViewHolder)vi.getTag(); 

     holder.name.setText(""); 
     holder.info.setText(""); 
     holder.image.setTag(data[position]); 
     imageLoader.DisplayImage(data[position], activity, holder.image); 
     return vi; 
    } 
} 

所以我想設置不同的文字名稱領域,信息領域,不同的圖像取決於如果用戶預訂與否。我從Sqlite數據庫中獲得的文本。因此,任何想法或建議是最好的方法來做到這一點?

我真的很感謝任何幫助!謝謝!

回答

2
if (userIsSubscribed) { 
    holder.name.setText("subscribedUserName"); 
    holder.info.setText("subscribedUserInfo"); 
    holder.image.setImageResource(drawable.userSubscribedImage); 
} else { 
    holder.name.setText("unsubscribedUserName"); 
    holder.info.setText("unsubscribedUserInfo"); 
    holder.image.setImageResource(drawable.userUnSubscribedImage); 
} 
+0

辦?如果我必須爲每一個做到這一點listview上的項目... –

+0

持有者在列表視圖中表示單個項目,因此無論如何每個項目都將被處理 – Dyonisos

1

所以,你有你的數據在你的變量「數據」

使用你的數據在你的getView方法就像你與你的圖片

holder.name.setText(data[position].getName()); 
    holder.info.setText(data[position].getInfo()); 
    holder.image.setTag(data[position]); 
    imageLoader.DisplayImage(data[position], activity, holder.image);