大家好,我是Android新手。我正在开发包含ListAdapter的应用程序,并且我想从onResume中清除它。onResume不更新适配器
在Activity中指的是levelsView。
public class MyActivity extends Activity{
...
@Override
protected void onResume(){
super.onResume();
levelsView.onResume();
}
}
LevelsView指FontsSelect在那里我有myAdapter
public class FontsSelect extends LinearLayout {
private List<FontLevels> fontsLevels;
public FontsSelect(Context context, AttributeSet attr, int defStyle){
super(context, attr, defStyle);
inflate(context, R.layout.list_view_of_fonts, this);
listViewFonts = (ListView)findViewById(R.id.list_of_fonts);
listViewFonts.setDivider(null);
fontsLevels = new ArrayList<FontLevels>();
levels = new ArrayList<Level>();
createLevels();
myAdapter = new MyAdapter(context);
listViewFonts.setOnItemClickListener(levelSelectListener);
listViewFonts.setAdapter(myAdapter);
}
public void createLevels(){
...
fontsLevels.add(new FontLevels(context, "fonts/TNR.ttf"))}
class MyAdapter extends BaseAdapter {
final LayoutInflater inflater;
public MyAdapter(Context context){
inflater = LayoutInflater.from(context);
}
@Override
public int getCount() {
return fontsLevels.size();
}
@Override
public Object getItem(int position) {
return fontsLevels.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
final ViewHolder holder;
if(convertView == null){
convertView = inflater.inflate(R.layout.item_level, parent, false);
holder = new ViewHolder((TextView)convertView.findViewById(R.id.level_name_typeface), (TextView)convertView.findViewById(R.id.level_score_number));
convertView.setTag(holder);
}
else {
holder = (ViewHolder)convertView.getTag();
}
...
return convertView;
}
}
public void onResume(){
listViewFonts.setAdapter(null);
fontsLevels.clear();
fontsLevels.add(new FontLevels(context, "fonts/TNR.ttf");
fontsLevels.add(new FontLevels(context, "fonts/TNR.ttf");
myAdapter = new MyAdapter(getContext(), fontsLevels);
listViewFonts.setAdapter(myAdapter);
myAdapter.notifyDataSetChanged();
}
}
这里是ckass FontLevel
public class FontLevels{
private String fontFullName;
private int _id;
private List<Level> easyLevels;
private List<Level> hardLevels;
public FontLevels(Context context, String fontFullName){
this.fontFullName = fontFullName;
typeface = Typeface.createFromAsset(context.getAssets(), FONTS_DIR + fontFullName);
easyLevels = new ArrayList<Level>(levelNumber);
hardLevels = new ArrayList<Level>(levelNumber);
}
,并重新启动后,我的应用程序,适配器不更新,并显示旧列表。 请帮忙)) Thanx !!!
你确定你的数组列表正在当你重新启动应用程序时更新?如果不是那么它的一般行为,以显示旧值:) –
我debuged应用程序,并看到,重新启动后,构造函数初始化数组(''createLevels()')和'getCount()'返回正确的值,但然后'onResume '清除数组和'getCount()= 0',最后我不明白getCount()是否返回旧值,因为没有人初始化数组 – IgorB
其实你已经定制了类并且隐藏了一些你的代码无法获取流和映射。你能用他们的参数和回应发布最少的方法吗? –