我调用一个函数createTheList来发送我的布局和数组适配器。然后在方法中我创建自定义setListAdapter。好吧,我想根据程序中的过滤器更改我的列表。即,如果一个人点击一个按钮,它会显示一个不同的列表。所以,我想再次调用createTheList方法,并在替换旧列表时重新创建列表。我正在努力解决这个问题。如果我使用不同的适配器再次调用createTheList,它只会附加到旧列表。有人可以带我走过这个吗?
public void createTheList(final int num, String[] Array ){
setListAdapter(new ArrayAdapter<String>(getActivity(), layoutName, R.id.myText, Array){
@Override
public View getView(int position, View convertView, ViewGroup parent){
final View row = super.getView(position, convertView, parent);
Button commentButton = (Button) row.findViewById(R.id.button1);
Button missingButton = (Button) row.findViewById(R.id.button2);
Button rideAlongButton = (Button) row.findViewById(R.id.button3);
if (arrayOfShifts[position].getRideAlongCount()>0 && arrayOfShifts[position].positionOnList == position){
rideAlongButton.setVisibility(row.VISIBLE);
}
else{
rideAlongButton.setVisibility(row.GONE);
}
if (arrayOfShifts[position].getMissingCnt() > 0 && arrayOfShifts[position].positionOnList == position){
missingButton.setVisibility(row.VISIBLE);
}
else{
missingButton.setVisibility(row.GONE);
}
if (arrayOfShifts[position].getHasComment() > 0 && arrayOfShifts[position].positionOnList == position){
commentButton.setVisibility(row.VISIBLE);
}
else{
commentButton.setVisibility(row.GONE);
}
return row;
}
});
从以下位置调用createTheList:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
layoutName = R.layout.fragtest1;
//My values to call a function
cache.put("Value1", "02-12-2014");
cache.put("Value2", 1);
//getShifts method returns an array.
String[] adapterArray = getShifts("GetShifts3" , cache);
createTheList(layoutName, adapterArray);
//If I add the following code, which is just a sample to replace my old list
//instead of removing the old list, it appends to the old list.
cache.clear();
//New Data
cache.put("Value1", "02-12-2014");
cache.put("Value2", 2);
String[] adapterArray2= getShifts("GetShifts3" , cache);
createTheList(layoutName, adapterArray2);
}
答案 0 :(得分:0)
notifyDataSetCHanged没有帮助?
答案 1 :(得分:0)
您是否考虑过使用List对象的RemoveAll()或Clear()方法。
答案 2 :(得分:0)
尝试在调用另一个列表之前清除String数组变量“Array”。