2016-04-22 179 views
0

你好,我只需要通过在左边添加一个图像数组来完成我的自定义列表视图。目前我已经添加了完美的文本,只需添加图像即可。我猜你把它们设置为一个类似于我已经为文本完成的数组,但只需要看看它是如何完成的。将图像添加到自定义列表视图

ListviewAdapter

public class ListViewAdapter extends ArrayAdapter<String> { 

String[] features={}; 
String[] clicks={}; 


Context c; 
LayoutInflater inflater; 




public ListViewAdapter(Context context, String[] features, String[] clicks) { 
    super(context, R.layout.custom_row, features); 

    this.c = context; 
    this.features = features; 
    this.clicks = clicks; 





} 

public class ViewHolder{ 

    TextView txtphone; 
    TextView txtcall; 


} 

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    if(convertView == null){ 


     inflater= (LayoutInflater) c.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     convertView = inflater.inflate(R.layout.custom_row, null); 
    } 

    final ViewHolder holder = new ViewHolder(); 


    holder.txtphone = (TextView) convertView.findViewById(R.id.txtphone); 
    holder.txtcall= (TextView) convertView.findViewById(R.id.txtcall); 


    holder.txtphone.setText(features[position]); 
    holder.txtcall.setText(clicks[position]); 


    return convertView; 


} 
} 

主要活动

String[] feature= {"Phone", "Email", "Website", "Opening Times"}; 
String[] click = {"click", "click", "click", "click", "click"}; 
int[] images ={R.drawable.ic_menu_gallery, R.drawable.ic_menu_send}; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.contact_us); 



    contactUs = (ListView)findViewById(R.id.contactUsListView); 




    ListViewAdapter adapter = new ListViewAdapter(this,feature,click); 
    contactUs.setAdapter(adapter); 


    contactUs.setOnItemClickListener(new Itemlist()); 

} 

正如你可以看到我已经加了两个图片到我的主要活动的顶部,但只需要一点点建议将它应用到我的列表视图

+0

你google一下这个初始化适配器。? –

+0

看到这个链接。它的帮助你..http://www.vogella.com/tutorials/AndroidListView/article.html –

回答

0

首先,您需要将ImageView添加到您的custom_row布局中。假设您已经添加了ID imgView。您应该拥有与ListView中的项目相同数量的图像。现在,你需要在适配改变代码如下

public class ListViewAdapter extends ArrayAdapter<String> { 

String[] features={}; 
String[] clicks={}; 
int[] images={}; 


Context c; 
LayoutInflater inflater; 




public ListViewAdapter(Context context, String[] features, String[] clicks, int[] images) { 
    super(context, R.layout.custom_row, features); 

    this.c = context; 
    this.features = features; 
    this.clicks = clicks; 
    this.images = images; 





} 

public class ViewHolder{ 

    TextView txtphone; 
    TextView txtcall; 
    ImageView imgView;  

} 

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    if(convertView == null){ 


     inflater= (LayoutInflater) c.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     convertView = inflater.inflate(R.layout.custom_row, null); 
    } 

    final ViewHolder holder = new ViewHolder(); 


    holder.txtphone = (TextView) convertView.findViewById(R.id.txtphone); 
    holder.txtcall= (TextView) convertView.findViewById(R.id.txtcall); 
    holder.imgView= (ImageView) convertView.findViewById(R.id.imgView); 


    holder.txtphone.setText(features[position]); 
    holder.txtcall.setText(clicks[position]); 
    holder.imgView.setImageResource(images[position]); 


    return convertView; 


} 
} 

images大小相同featuresclicks

int[] images ={R.drawable.ic_menu_gallery, R.drawable.ic_menu_send, R.drawable.ic_menu_send, R.drawable.ic_menu_send, R.drawable.ic_menu_send}; 

而且如下

ListViewAdapter adapter = new ListViewAdapter(this,feature,click,images);