首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有三个不同xml项的android ListView适配器

具有三个不同xml项的android ListView适配器
EN

Stack Overflow用户
提问于 2014-07-25 02:49:24
回答 1查看 233关注 0票数 0

我正在尝试创建一个具有三种不同项目类型的列表视图,我有一段代码可以处理两个XML文件

下面是适配器代码:

代码语言:javascript
复制
 private class MyCustomAdapter extends ArrayAdapter<String> {
    String hello;
    private String place;
    int image;
    private String temp;
    private String humidity;
    private String windspeed;
    private String condition;
    private int imageTop;

    private String time;
    private static final int TYPE_WEATHER = 0;
    private static final int TYPE_TIME = 1;
    private static final int TYPE_TOP = 2;
    private static final int TYPE_MAX_COUNT = 3 + 1;

    private ArrayList<String> mData = new ArrayList<String>();

    private LayoutInflater mInflater;

    private TreeSet<Integer> mSeparatorsSet = new TreeSet<Integer>();

    public MyCustomAdapter(Context context, int resource) {
        super(context, resource);
        mInflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    }

    public void addWeather(final String place,final int image , final String temp,final String humidity,final String windspeed,final String condition) {
        mData.add(place);
        this.place = place;
        this.image = image;
        this.temp = temp;
        this.humidity = humidity;
        this.windspeed = windspeed;
        this.condition = condition;
        notifyDataSetChanged();
    }

    public void addFavapp(final String helloworld){
        mData.add(place);
        this.hello = helloworld;
        notifyDataSetChanged();
    }


    public void addItem(final String item) {
        this.time = item;
        mData.add(item);
        // save separator position
        mSeparatorsSet.add(mData.size() - 1);
        notifyDataSetChanged();
    }

    @Override
    public int getItemViewType(int position) {
        return mSeparatorsSet.contains(position) ? TYPE_WEATHER : TYPE_TIME;
    }

    @Override
    public int getViewTypeCount() {
        return TYPE_MAX_COUNT;
    }

    @Override
    public int getCount() {
        return mData.size();
    }

    @Override
    public String getItem(int position) {
        return mData.get(position);
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        ViewHolder holder = null;
        int type = getItemViewType(position);
        System.out.println("getView " + position + " " + convertView + " type = " + type);
        if (convertView == null) {
            holder = new ViewHolder();
            switch (type) {
                case TYPE_WEATHER:
                    convertView = mInflater.inflate(R.layout.weather_item, null);
                    //Handling xml file weather_item
                    break;
                case TYPE_TIME:
                    convertView = mInflater.inflate(R.layout.time_card_item, null);
                    holder.textView = (TextView)convertView.findViewById(R.id.two);
                    holder.textView.setText(time);
                    break;
                case TYPE_TOP:
                    convertView = mInflater.inflate(R.layout.top_card_item, null);
                    //Handling xml file top_card_item

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

}

public static class ViewHolder {
    public TextView textView;
    public ImageView image;
    public TextView txtTemp;
    public ImageView imageView;
    public  TextView txthumidity;
    public TextView txtWind;
    public TextView txtCond;
}

我尝试创建一个名为"addFavapp“的方法来添加我的第三个XML文件,但是我无法让它工作。

请帮帮忙。

EN

回答 1

Stack Overflow用户

发布于 2014-07-25 03:28:41

通过替换来修复它

代码语言:javascript
复制
        return mSeparatorsSet.contains(position) ? TYPE_WEATHER : TYPE_TIME;

getItemViewType内部

代码语言:javascript
复制
        return position;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24941694

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档