2011-08-17 10 views
1

我正在使用web servis來獲取我需要的地點的數據。在listView中,我需要顯示圖像,地點名稱,地點類型和地址圖像。我正在使用簡單適配器。我知道如何填充文本,但不知道如何從文件夾繪製圖像。第一張圖像按照某種順序排列(如圖像A,第二張圖像B,第三張圖像C),第二張圖像取決於地點的類型(如果地點是麪包店而不是圖像將是麪包)等等。我轉發給SimpleAdapter的ArrayList的HashMaps ...任何人都可以給我一些想法或一些代碼?ListView問題 - 如何將可繪製圖像放入列表視圖

回答

2

我認爲這個例子會幫助你。

//主類

import android.app.Activity; 
import android.os.Bundle; 

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.ListView; 
import android.widget.TextView; 

public class Alertslistview extends Activity 
{ 

private static class EfficientAdapter extends BaseAdapter 
{ 
    private LayoutInflater mInflater; 

    public EfficientAdapter(Context context) 
    { 
    mInflater = LayoutInflater.from(context); 
    } 

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

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

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

    public View getView(int position, View convertView, ViewGroup parent) 
    { 
    ViewHolder holder; 
    if (convertView == null) 
    { 
     convertView = mInflater.inflate(R.layout.alertslist, null); 
     holder = new ViewHolder(); 
     holder.img =(ImageView) convertView.findViewById(R.id.img); 
     holder.text2 = (TextView) convertView.findViewById(R.id.TextView02); 

     convertView.setTag(holder); 
    } 
    else 
    { 
     holder = (ViewHolder) convertView.getTag(); 
    } 

     holder.img.setImageResource(imgid[position]); 
     holder.text2.setText(alerts[position]); 

     return convertView; 
    } 

    static class ViewHolder 
    { 
     ImageView img; 
     TextView text2; 
    }} 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    ListView l1 = (ListView) findViewById(R.id.ListView01); 
    l1.setAdapter(new EfficientAdapter(this));  } 

private static final String[] alerts= {"Service Request EBH123H has been reassigned to Mohammed","Appointment Request for May 29th declined","New Survey - Metro Rail Survey available on your device"}; 

static final Integer[] imgid = {R.drawable.alert,R.drawable.alert,R.drawable.alert}; 
} 
0

你必須創建一個類從BaseAdapter延伸,並把代碼getview方法是這樣的:

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    View v; 
    if (convertView == null) { 
     LayoutInflater li = (LayoutInflater) mContext 
       .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     v = li.inflate(R.layout.imagelayout, null); 
     ImageView iv = (ImageView) v.findViewById(R.id.icon_image); 
     iv.setImageResource(icons[position]); 
    } else { 
     v = convertView; 
    } 
    return v; 
} 

之前,創建一個包含ImageView的ImageLayout.xml,之後適應你的ListView這一類。

對不起,我的英語不好!

+0

這是okej..my英語是不是更好。 :D你可以解釋這2行: v = li.inflate(R.layout.imagelayout,null); ImageView iv =(ImageView)v.findViewById(R.id.icon_image); 012.Mi.setImageResource(圖標[position]); 以及我如何添加來自listView的文本,正如我在我的問題中所解釋的 – Jovan

相關問題