我有一个应用程序,其中我使用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;
}
}
答案 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
}
}
});