how to get position of arraylist in own adapter

孤人 提交于 2019-12-13 08:35:27

问题


I want to set the position of the arraylist (items) into my own adapter of listview.

 holder.txtViewTitle.setText(title.get(position)); 

But I got the error. Please check the below code.

also I got the error of the setImageResource.

 holder.imgViewLogo.setImageResource(images[position]);  

Thanks.

public class LazyAdapter extends BaseAdapter{

private activites context;
private ArrayList<String> title;
private String[] images;
private LayoutInflater inflater;


public LazyAdapter(activites activites,String[] img ,ArrayList<String> items) {  
    super();  

    this.context = activites;  
    this.title = items;  
    this.images = img; 

}  

@Override  
public int getCount() {  
    // TODO Auto-generated method stub  
    return title.size();  
}  

@Override  
public Object getItem(int position) {  
    // TODO Auto-generated method stub  
    return null;  
}  

@Override  
public long getItemId(int position) {  
    // TODO Auto-generated method stub  
    return 0;  
}  

public static class ViewHolder  
{  
    ImageView imgViewLogo;  
    TextView txtViewTitle;  

}  

@Override  
public View getView(int position, View convertView, ViewGroup parent) {  
    // TODO Auto-generated method stub  

    ViewHolder holder;  
    if(convertView==null)  
    {  
        holder = new ViewHolder();  
        convertView = inflater.inflate(R.layout.activity_listitem, null);  

        holder.imgViewLogo = (ImageView) convertView.findViewById(R.id.activity_list_logo);  
        holder.txtViewTitle = (TextView) convertView.findViewById(R.id.activity_list_title);  

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

    holder.imgViewLogo.setImageResource(images[position]);  
    holder.txtViewTitle.setText(title.get(position));  


    return convertView;  
}   

}

回答1:


Here is the problem i think:

    private String[] images;

You should declare it:

   private Integer[] images;

Hope this will Help




回答2:


small correction in the following overidden methods. Try this and let me know

@Override  
public int getCount() {  
    // TODO Auto-generated method stub  
    return title.size();  
}  

@Override  
public Object getItem(int position) {  
    // TODO Auto-generated method stub  
    return position;  
}  
@Override  
public long getItemId(int position) {  
    // TODO Auto-generated method stub  
    return position;  
}  



回答3:


public class LazyAdapter extends BaseAdapter{

private activites context;
private ArrayList<String> title;
private String[] images;
private LayoutInflater inflater;
 Bitmap myBitmap;


public LazyAdapter(activites activites,String[] img ,ArrayList<String> items) {  
    super();  

    this.context = activites;  
    this.title = items;  
    this.images = img; 

}  

@Override  
public int getCount() {  
    // TODO Auto-generated method stub  
    return title.size();  
}  

@Override  
public Object getItem(int position) {  
    // TODO Auto-generated method stub  
    return null;  
}  

@Override  
public long getItemId(int position) {  
    // TODO Auto-generated method stub  
    return 0;  
}  

public static class ViewHolder  
{  
    ImageView imgViewLogo;  
    TextView txtViewTitle;  

}  

@Override  
public View getView(int position, View convertView, ViewGroup parent) {  
    // TODO Auto-generated method stub  
 try {
                      url = new URL(images[position]);
                      connection = (HttpURLConnection) url
                                    .openConnection();

                        connection.setDoInput(true);


                            connection.connect();
                             connection.setReadTimeout(120000);
                             InputStream     input = connection.getInputStream();
                             myBitmap = BitmapFactory.decodeStream(input);

                            } catch (IOException e) {
                        e.printStackTrace();
                        return null;
                    }
    ViewHolder holder;  
    if(convertView==null)  
    {  
        holder = new ViewHolder();  
        convertView = inflater.inflate(R.layout.activity_listitem, null);  

        holder.imgViewLogo = (ImageView) convertView.findViewById(R.id.activity_list_logo);  
        holder.txtViewTitle = (TextView) convertView.findViewById(R.id.activity_list_title);  

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

    holder.imgViewLogo.setImageBitmap(myBitmap);  
    holder.txtViewTitle.setText(title.get(position));  


    return convertView;  
}   

}


来源:https://stackoverflow.com/questions/10188767/how-to-get-position-of-arraylist-in-own-adapter

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!