xiaoyan_12 2012-12-11 09:27 采纳率: 25%
浏览 3152
已采纳

在listview中使用自己的图像

我创建的程序里,想把10个图像显示在 ListView视图中
创建的类如下;

public class LayoutAdapterObj {
 public String addString;
 public ImageView leftImage;
 public String backgroundImageName;
 public LayoutAdapterObj(String addString,ImageView leftImageName,String backgroundImageName){
     this.addString = addString;
     this.leftImage = leftImageName;
     this.backgroundImageName = backgroundImageName;
 }

LayoutAdaptor对象

aArray.add(new LayoutAdapterObj("1",new ImageView(null, null, R.drawable.frame1),"R.drawable.layout"));
    aArray.add(new LayoutAdapterObj("2",new ImageView(null, null, R.drawable.frame2),"R.drawable.layout"));
    LayoutListAdapter m_adapter;
    m_adapter = new LayoutListAdapter(this, R.layout.topbarlayout, aArray);

adapter类

 public View getView(int position, View convertView, ViewGroup parent) {
                View v = convertView;
                if (v == null) {
                    LayoutInflater vi = (LayoutInflater)getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                        v = vi.inflate(R.layout.layout1, null);
                }
                LayoutAdapterObj o = items.get(position);
                if (o != null) {
                        TextView addText = (TextView) v.findViewById(R.id.addtext);                     
                        ImageView leftImage=(ImageView)v.findViewById(R.id.layoutframe);
                        if(!o.backgroundImageName.equals(""))
                        {

                        }
                        if(addText!=null)
                        {
                            addText.setText(o.addString);
                        }

错误信息:

java.lang.IllegalStateException: Could not execute method of the activity

if(leftImage != null)
{
    leftImage= o.leftImage;
}

怎么出现的这个错误呢?

  • 写回答

3条回答 默认 最新

  • hxn_217 2012-12-19 05:27
    关注

    请看这个例子:

     class UserListAdapter extends ArrayAdapter<String> 
            {
    
                    @Override
                public int getCount() {
                    // TODO Auto-generated method stub
                    int temp;
                    if(SharedVariables.is_traffic_search_ON_flag){
                        temp=search_cases_trafficTicketsList.size();
                    }else{
                        temp=search_cases_criminalTicketsList.size();
                    }
                    return temp;
                }
    
                Activity context;
    
                public UserListAdapter(Activity context) {
                    super(context, 0);
    
                    Log.d("hh","sgbdfjfdgfk");
    
                    this.context = context;
                }
    
                 class ViewHolder {
    
                     RelativeLayout rl2;
                     ImageView genderimage;
                     TextView ticketcounttt;
                     TextView name;
                     TextView city;
                     TextView added_date;
                }
    
                @SuppressWarnings("unused")
                public View getView(final int position, View convertView, ViewGroup parent){//here we inflating the layout "R.layout.cars_row"
                    ViewHolder holder;
                    View rowView = convertView;
                    if (rowView == null) {
    
                        LayoutInflater inflater = context.getLayoutInflater();
    
                        if(SharedVariables.is_traffic_search_ON_flag)rowView = inflater.inflate(R.layout.traffic_row, null, true);
                        else rowView = inflater.inflate(R.layout.criminal_row, null, true);
    
                        holder = new ViewHolder();
    
    
                        holder.rl2=(RelativeLayout) rowView.findViewById(R.id.rl2); 
    
                        try{
                        holder.genderimage=(ImageView) rowView.findViewById(R.id.genderimage);
                        }catch (Exception e) {
                            e.printStackTrace();
                            // TODO: handle exception
                        }
                        holder.ticketcounttt=(TextView) rowView.findViewById(R.id.ticketcounttt);
                        holder.name=(TextView) rowView.findViewById(R.id.textView1);
                        holder.city=(TextView) rowView.findViewById(R.id.textView2);
                        holder.added_date=(TextView) rowView.findViewById(R.id.textView333);
    
                        //Traffic cases...
                        if(SharedVariables.is_traffic_search_ON_flag)
                        {
    
                            if(search_cases_trafficTicketsList.get(position).CaseID!=0)holder.rl2.setBackgroundResource(R.drawable.green_color1); //Pink color...
                            else  holder.rl2.setBackgroundResource(R.drawable.pink_color); //Green color...
    
                if(search_cases_trafficTicketsList.get(position).Sex.equals("M"))holder.genderimage.setBackgroundResource(R.drawable.man);
                            else holder.genderimage.setBackgroundResource(R.drawable.woman);
                holder.ticketcounttt.setTypeface(SharedVariables.font);
                holder.name.setTypeface(SharedVariables.font);
                holder.city.setTypeface(SharedVariables.font);
                holder.added_date.setTypeface(SharedVariables.font);
                holder.name.setText(search_cases_trafficTicketsList.get(position).FirstName+" "+search_cases_trafficTicketsList.get(position).LastName);
                holder.city.setText(search_cases_trafficTicketsList.get(position).City+" City"+"("+search_cases_trafficTicketsList.get(position).ZIP+")");
    
                            try{
    
                                String s[]=search_cases_trafficTicketsList.get(position).ViolationDate.split("/");
    
                                String month=SharedVariables.convertFromNumberToMonth(Integer.parseInt(s[0]));
                                String day=s[1];
    
                                String year=s[2].substring(0,4);
    
                            holder.added_date.setText("Added: "+Integer.parseInt(day)+" "+month+" "+year);  
                            }catch (Exception e) {
                                e.printStackTrace();
                                // TODO: handle exception
                            }           
    
                            try{
                                holder.ticketcounttt.setText(""+search_cases_trafficTicketsList.get(position).Violations.split(",").length);
                            }catch (Exception e) {
                                e.printStackTrace();
                                // TODO: handle exception
                            }       
    
                        }
    
                        //Criminal casess...
                        else{
    
                            if(search_cases_criminalTicketsList.get(position).CaseID!=0)holder.rl2.setBackgroundResource(R.drawable.green_color1); //Pink color...
                            else  holder.rl2.setBackgroundResource(R.drawable.pink_color); //Green color...
    
                    holder.ticketcounttt.setTypeface(SharedVariables.font);
                holder.name.setTypeface(SharedVariables.font);
                holder.city.setTypeface(SharedVariables.font);
                holder.added_date.setTypeface(SharedVariables.font);
                holder.name.setText(search_cases_criminalTicketsList.get(position).FirstName+" "+search_cases_criminalTicketsList.get(position).LastName);
                holder.city.setText(search_cases_criminalTicketsList.get(position).City+" City");
    
                            try{
    
                                String s[]=search_cases_criminalTicketsList.get(position).ViolationDate.split("/");
    
                                String month=SharedVariables.convertFromNumberToMonth(Integer.parseInt(s[0]));
                                String day=s[1];
    
                                String year=s[2].substring(0,4);
    
                            holder.added_date.setText("Added: "+Integer.parseInt(day)+" "+month+" "+year);  
                            }catch (Exception e) {
                                e.printStackTrace();
                                // TODO: handle exception
                            }           
    
                            try{
                                holder.ticketcounttt.setText(""+search_cases_criminalTicketsList.get(position).Violations.split(",").length);
                            }catch (Exception e) {
                                e.printStackTrace();
                                // TODO: handle exception
                            }       
    
                        }
    
    
                        rowView.setTag(holder);                 
    
                    }
                    else
                    {
                        holder = (ViewHolder) rowView.getTag();
                    }
    
                    return rowView;
    
                }
    
                @Override
                public long getItemId(int position) {
                    // TODO Auto-generated method stub
                    return position;
                }
    
    
            }
    

    然后再调用 adapter

    UserListAdapter a=new UserListAdapter(); yurlistview.setAdapter(a);
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 求daily translation(DT)偏差订正方法的代码
  • ¥15 js调用html页面需要隐藏某个按钮
  • ¥15 ads仿真结果在圆图上是怎么读数的
  • ¥20 Cotex M3的调试和程序执行方式是什么样的?
  • ¥20 java项目连接sqlserver时报ssl相关错误
  • ¥15 一道python难题3
  • ¥15 牛顿斯科特系数表表示
  • ¥15 arduino 步进电机
  • ¥20 程序进入HardFault_Handler
  • ¥15 关于#python#的问题:自动化测试