簡體   English   中英

android CustomView

[英]android CustomView

解析Web服務響應后,我得到了一個列表。 我已經使用BaseAdapter創建了一個customview。 我面臨的問題是我無法使用創建的customview 將數據綁定到ListView 這是我的自定義視圖:

public class ItemListBaseAdapter extends BaseAdapter {

    int layoutResourceId;  

    private static List<Item> itemDetailsarrayList;


    private LayoutInflater l_Inflater;

    public ItemListBaseAdapter(Context context, List<Item> results) {
        itemDetailsarrayList = results;
        l_Inflater = LayoutInflater.from(context);
    }
    @Override
    public int getCount() {
        // TODO Auto-generated method stub
        return 0;
    }

    @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;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        // TODO Auto-generated method stub
        ViewHolder holder;
        if (convertView == null) {
            convertView = l_Inflater.inflate(R.layout.row_layout, null);
            holder = new ViewHolder();
            holder.txtTitle = (TextView) convertView.findViewById(R.id.textView1);         
        convertView.setTag(holder);
        } else {
            holder = (ViewHolder) convertView.getTag();
        }

        holder.txtTitle.setText(itemDetailsarrayList.get(position).getCity_name());
        return convertView;
     }

     static class ViewHolder {   
        TextView txtTitle;
     }
}

這就是我試圖綁定的方式:

llstCities = Objparsecities.parse();
ItemListBaseAdapter adapter = new ItemListBaseAdapter(this, lstCities);
lstcities = (ListView)findViewById(R.id.listView1);
lstcities.setAdapter(adapter);

用以下代碼替換您的代碼:見魔術...

public class ItemListBaseAdapter extends BaseAdapter {

     int layoutResourceId;  

    private static List<Item> itemDetailsarrayList;


    private LayoutInflater l_Inflater;

     public ItemListBaseAdapter(Context context, List<Item> results) {
      itemDetailsarrayList = results;
      l_Inflater = LayoutInflater.from(context);
     }
    @Override
    public int getCount() {
        // TODO Auto-generated method stub
        return itemDetailsarrayList.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;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        // TODO Auto-generated method stub
         ViewHolder holder;
          if (convertView == null) {
           convertView = l_Inflater.inflate(R.layout.row_layout, null);
           holder = new ViewHolder();
           holder.txtTitle = (TextView) convertView.findViewById(R.id.textView1);          
           convertView.setTag(holder);
          } else {
           holder = (ViewHolder) convertView.getTag();
          }

          holder.txtTitle.setText(itemDetailsarrayList.get(position).getCity_name());
          return convertView;
     }

     static class ViewHolder {

         TextView txtTitle;

     }
}

看看getCount()方法:

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

}

解決方案是返回適配器包含的完整項目的數量。 您應該知道必須實現的任何方法! 不僅讓eclipse生成方法。 他們只是那時的存根。 如果您不知道在方法中要做什么,則開發人員文檔可為您提供絕佳的視角。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM