滚动列表视图时如何解决背景图像的变化?

时间:2014-07-11 05:52:19

标签: android xml listview

我有一个应用程序,其中我使用listview,其中第一部分是部分部分,其他部分是部分部分。但我想根据分段信息在列组视图中使用圆角制作列表视图。假设部分包含字符A,如果标题包含B,则所有关于A的信息再次显示在带有圆形背景的A部分下,则关于B的所有信息都显示在具有圆角的B下,依此类推。我会给你我的适配器类,我想根据分段信息制作圆形块。但我使用两个不同的自定义视图,一个用于节,第二个用于节项。我在给定代码中写入条件,根据节文本显示带圆角的块。但是,当我移动列表视图时,仅在第一次显示圆形背景形状时,它会从背景中移除。

在我的下面的代码中,我提到了一些条件。那么我在解释它的条件是做什么的。

    **variables:**

    size- it indicate the how much data contain in a particular sectioned.
    index- it indicate the position of the array.
    arr- this is an array.
    counter- it indicate the position where i set the rounded shape.            


    This is my adapter class:  

        public class EntryAdapter extends ArrayAdapter {

            private Context context;
            public ArrayList items;
            private LayoutInflater  vi;
            public int arr[]=new int[26];
            public int sum=0,size,counter=0,index=0;
            public EntryAdapter(Context context,ArrayList items,int arr[],int size) {
                super(context,0, items);
                this.context = context;
                this.items = items;
                this.arr=arr;
                vi = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                this.size=size;
            }


            @Override
            public View getView(int position, View convertView, ViewGroup parent) {
                View v = convertView;
                ViewHolder1     holder1=new ViewHolder1();
                final Item i = (Item) items.get(position);
                if (i != null) {
                    if(i.isSection()){
                        SectionItem si = (SectionItem)i;
                        v = vi.inflate(R.layout.list_item_section, null);

                        v.setOnClickListener(null);
                        v.setOnLongClickListener(null);
                        v.setLongClickable(false);

                        holder1.sectionView = (TextView) v.findViewById(R.id.list_item_section_text);
                        holder1.sectionView.setText(si.getTitle());

                    }else{
                        EntryItem ei = (EntryItem)i;
                        if (v!=null) {
                            v = vi.inflate(R.layout.list_item_entry, null);
                            holder1.title = (TextView)v.findViewById(R.id.list_item_entry_title);
                            holder1.ll=(LinearLayout)v.findViewById(R.id.ll);
                        }

                        counter++;
                        holder1.title.setText(ei.title);
                        if(counter==arr[index])
                        {
                            counter=0;
                            if(index<size){
                                index++;
                            }   
                            holder1.ll.setBackgroundResource(R.drawable.list_rounded_corner_shape);
                            Log.v("LOG ", "if ");
                        }
                    }
                }
                return v;
            }



            class ViewHolder1{
                TextView sectionView,title;
                LinearLayout ll;
            }

        }

1 个答案:

答案 0 :(得分:0)

尝试使用setOnScrollListener并使用scrollState实现onScrollStateChanged

ListView lv = (ListView)findViewById(R.id.list_view);
lv.setOnScrollListener(new OnScrollListener() {
    @Override
    public void onScroll(AbsListView view, int firstVisibleItem, 
        int visibleItemCount, int totalItemCount) {
        //Check if the last view is visible
        if (++firstVisibleItem + visibleItemCount > totalItemCount) {
            //load more content
        }
    }
});