滚动时列出项目更改

时间:2014-07-15 06:42:07

标签: android list scroll adapter

我希望位置0的项目布局不同,其他所有项目的布局。 但是当我滚动列表时,位置0的布局,即(R.layout.list_simple)设置在任何随机位置..

请帮帮我......

public View getView(final int position, View convertView, ViewGroup parent) {

    View vi = convertView;
    ViewHolder holder = null;

    if (vi == null) {

        if (position == 0) {
            vi = inflater.inflate(R.layout.list_simple, null);
            holder = new ViewHolder();
            holder.text = (TextView) vi.findViewById(R.id.title);
            holder.image = (ImageView) vi.findViewById(R.id.thumb);
            vi.setTag(holder);

        } else {
            vi = inflater.inflate(R.layout.feed_list_item, null);
            holder = new ViewHolder();
            holder.text = (TextView) vi.findViewById(R.id.title);
            holder.image = (ImageView) vi.findViewById(R.id.thumb);
            vi.setTag(holder);
        }
    } else {
        holder = (ViewHolder) vi.getTag();
    }
    // if (data.size() <= 0) {
    // holder.text.setText("No Data");

    // }
    tempValues = (RssFeedStructure) data.get(position);

    if (tempValues.getIconSrc() != null) {
        img.DisplayImage(tempValues.getIconSrc(), holder.image);
    }

    holder.text.setText(tempValues.getHeadLine());
    holder.image.setVisibility(View.VISIBLE);
    // Log.e("TEmpImage",""+tempValues.getIconSrc());
    img.DisplayImage(tempValues.getIconSrc(), holder.image);

    return vi;
}

static class ViewHolder {

    private TextView text;
    private ImageView image;
}

1 个答案:

答案 0 :(得分:5)

这是因为第一个视图被重用来创建另一个视图。使用getViewTypeCount()告诉adapeter你可以使用的项目和getItemViewType(int position)来告诉使用哪种布局。这样就不会重复使用to layout了。

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

@Override
        public int getItemViewType(int position) {
            return (position==0) ? 0: 1;
        }