我的片段中有一个Next按钮和listview。 当我点击外部“下一步”时,我必须更改列表项的背景, 第二次单击它应该转到列表中的下一个项目并更改背景。 当我点击下一步它是在最后一行它应该来到第一行项目。
下面是我的简单ArrayAdapter
public class MyListAdapter extends ArrayAdapter<String> {
private List<String> list;
private Context mContext;
public MyListAdapter(Context context, int resource,
int textViewResourceId, List<String> objects) {
super(context, resource, textViewResourceId, objects);
list = objects;
mContext = context;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return list.size();
}
@Override
public String getItem(int position) {
// TODO Auto-generated method stub
return super.getItem(position);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
View mView = super.getView(position, convertView, parent);
return mView;
}
}
答案 0 :(得分:0)
- 维护一个指针(从0开始),它记录了更改背景的listview项的位置。
每次下一次点击,如果它小于列表的左数,则将其增加1并调用notifydatasetchanged,否则将其设置为0并调用notifydataSetChanged。
- 在适配器类中,在getview中,如果位置小于或等于指针,则将背景设置更改为默认值。
答案 1 :(得分:0)
一种方法是使用getChildAt()
你应该保持当前的指数
如果用户点击下一步 - &gt;
private int index = 0;
public void nextButtonClicked(){
updateViewAt(index,false)
if(index==(listView.getCount()-1)){
index = 0
}else{
index++
}
updateViewAt(index,true)
}
private void updateViewAt(int index,boolean isSelected){
View v = listView.getChildAt(index -
listView.getFirstVisiblePosition());
if(v == null)
return;
TextView textView= (TextView) v.findViewById(R.id.text_view);
if(isSelected){
//TODO if view is selected functionality
}else{
// TODO if view is NOT selected functionality
}
}