Android更改适配器中的数据
我将此适配器用于我的ListView:Android更改适配器中的数据,android,android-listview,Android,Android Listview,我将此适配器用于我的ListView: Appadapter extends ArrayAdapter<ResolveInfo> private PackageManager pm=null; List<ResolveInfo> apps; AppAdapter(PackageManager pm, List<ResolveInfo> apps) { super(Launchalot.this, R.layout.row
Appadapter extends ArrayAdapter<ResolveInfo>
private PackageManager pm=null;
List<ResolveInfo> apps;
AppAdapter(PackageManager pm, List<ResolveInfo> apps) {
super(Launchalot.this, R.layout.row, apps);
this.apps=apps;
this.pm=pm;
}
@Override
public View getView(int position, View convertView,
ViewGroup parent) {
Log.w(Launchalot.this.getPackageName(),"getView");
if (convertView==null) {
convertView=newView(parent);
}
bindView(position, convertView);
return(convertView);
}
private View newView(ViewGroup parent) {
Log.w(Launchalot.this.getPackageName(),"newView");
return(getLayoutInflater().inflate(R.layout.row, parent, false));
}
private void bindView(int position, View row) {
TextView label=(TextView)row.findViewById(R.id.label);
Log.w(Launchalot.this.getPackageName(),"bindView");
label.setText(getItem(position).loadLabel(pm));
ImageView icon=(ImageView)row.findViewById(R.id.icon);
icon.setImageDrawable(getItem(position).loadIcon(pm));
}
public void notifyDataSetChanged() {
super.notifyDataSetChanged();
setNotifyOnChange(true);}}
现在我已经更改了列表应用程序
我打电话给notifyDataSetChanged()
但是,正如我所想,一切都没有改变。请告诉我一个解决办法。
谢谢,简短而快速,在您觉得数据集中的更改已完成后,请拨打这两行
AppAdapter adapter=new AppAdapter(getPackageManager(), getResolveInfoList(0));
setListAdapter(adapter);
这些信息仍然不足以发现问题并帮助您。这就是为什么我将用一个简单的例子解释如何使用
notifyDataSetChanged()代码>打开MyCustomAdapter
。
以下是如何填充适配器的示例:
private ArrayList<String> _names;
private MyCustomAdapter _adapter;
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
_names = new ArrayList<String>();
for(int i = 0; i < _names.size();i++){
_names.add("Element : "+i);
}
_adapter = new MyCustomAdapter(this, _names);
_myListView.setAdapter(_adapter);
}
private void refreshListView(){
_names.clear();
for(int i = 0; i < _names.size();i++){
_names.add("New Element : "+i);
}
_adapter.notifyDataSetChanged();
}
private ArrayList\u名称;
私有MyCustomAdapter\u适配器;
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
_名称=新的ArrayList();
对于(int i=0;i<_names.size();i++){
_名称。添加(“要素:+i”);
}
_adapter=新的MyCustomAdapter(此,_名称);
_myListView.setAdapter(_adapter);
}
私有空刷新列表视图(){
_name.clear();
对于(int i=0;i<_names.size();i++){
_名称。添加(“新元素:+i”);
}
_adapter.notifyDataSetChanged();
}
这里的想法是更改用于填充listview的列表。清除它,用新数据填充它,然后调用notifyDataSetChanged()代码>
就这些
private ArrayList<String> _names;
private MyCustomAdapter _adapter;
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
_names = new ArrayList<String>();
for(int i = 0; i < _names.size();i++){
_names.add("Element : "+i);
}
_adapter = new MyCustomAdapter(this, _names);
_myListView.setAdapter(_adapter);
}
private void refreshListView(){
_names.clear();
for(int i = 0; i < _names.size();i++){
_names.add("New Element : "+i);
}
_adapter.notifyDataSetChanged();
}