用于呼叫日志的惰性适配器



我创建了一个可以显示呼叫记录的应用程序。我用的是LazyAdapter类。根据呼叫类型显示一个图标:Missed/Incoming/Outgoing。这部分工作不正常。文本的显示,如名称,数字,日期和时间显示只是很好,除了呼叫类型?

下面是我要做的:

  public class LazyAdapter extends BaseAdapter
  {
private Activity activity;
private ArrayList<HashMap<String, String>> data;
private static LayoutInflater inflater=null;
public LazyAdapter(Activity a, ArrayList<HashMap<String, String>> d)
{
    activity = a;
    data=d;
    inflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
public int getCount() 
{       
    return data.size();         
}
public Object getItem(int position) {
    return position;
}
public long getItemId(int position)
{
    return position;
}
public View getView(int position, View convertView, ViewGroup parent) 
{
    View vi=convertView;
    if(convertView==null)
        vi = inflater.inflate(R.layout.callist, null);

    TextView name = (TextView)vi.findViewById(R.id.name); 
    TextView number = (TextView)vi.findViewById(R.id.phone_number); 
    TextView date = (TextView)vi.findViewById(R.id.date); 
    TextView time = (TextView)vi.findViewById(R.id.time);
    TextView duration = (TextView)vi.findViewById(R.id.duration); 
    ImageView callType = (ImageView)vi.findViewById(R.id.calType);
    ImageView clock = (ImageView)vi.findViewById(R.id.Clock);

    HashMap<String, String> pro = new HashMap<String, String>();
    pro = data.get(position);

    if((pro.get(ListOfCall.contactName)!=null))
    {
        name.setText(pro.get(ListOfCall.contactName));      
    }
    else
    {
        name.setText("Unknown"); 
    }   
    number.setText(pro.get(ListOfCall.phone));
    date.setText(pro.get(ListOfCall.DateOfCall));
    time.setText(pro.get(ListOfCall.TimeOfCall));
    String  type = pro.get(ListOfCall.typeofCall);

    if(type.equalsIgnoreCase("OUTGOING"))
    {
        callType.setImageResource(R.drawable.outgoing); 
        duration.setText(pro.get(ListOfCall.durationOfCall));
    }
    else if(type.equalsIgnoreCase("INCOMING"))
    {
        callType.setImageResource(R.drawable.incoming); 
        duration.setText(pro.get(ListOfCall.durationOfCall));
    }
    else if(type.equalsIgnoreCase("MISSED"))
    {
        callType.setImageResource(R.drawable.missed);   
        duration.setVisibility(4);
        clock.setVisibility(4);
    }
    return vi;
}
}

我真的不确定问题在哪里,因为我能够在arraylist中获得正确的结果,称为顶部的数据。当我将数组列表移动到Hashmap时,事情发生了变化,称为pro.

除了调用类型和相应的图像没有出现外,值再次正确显示。

谁能帮我把这个修好吗?

发现LazyAdapter类中的条件没有按要求工作。删除了向LazyAdapter类发送值的条件,并在类之前添加了这些条件。

现在可以工作了!!

谢谢!

最新更新