我想刷新项目来自服务器的ListView
项目。我使用notifyDataSetChanged();
,但它不适用于我的代码。我按下button
后需要刷新ListView
。
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = context.getLayoutInflater();
View listViewItem = inflater.inflate(R.layout.declined_list_view_layout, null, true);
notifyDataSetChanged();
TextView textViewId = (TextView) listViewItem.findViewById(R.id.textViewId);
TextView textViewName = (TextView) listViewItem.findViewById(R.id.textViewName);
textViewId.setText(ids[position]);
textViewName.setText( ages[position]+" years"+" , "+heights[position]+" cm"+", "+communities[position]+" : "+castes[position]+" , "+educations[position]+" , "+occupations[position]+" , "+incomes[position]+", "+locations[position]);
Button btnSort =(Button) listViewItem.findViewById(R.id.btnshort);
btnSort.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getContext(),"shortlist",Toast.LENGTH_LONG).show();
}
});
Button btnChat =(Button) listViewItem.findViewById(R.id.btnchat);
btnChat.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(v.getContext(), BlankActivity.class);
Toast.makeText(getContext(), ids[position],
Toast.LENGTH_LONG).show();
i.putExtra("id", ids[position]);
v.getContext().startActivity(i);
}
});
return listViewItem;
}
答案 0 :(得分:3)
<强> notifyDataSetChanged() 强>
通知附加的观察者基础数据已经存在 已更改,任何反映数据集的视图都应自行刷新。
当我按下后退按钮时,我需要刷新ListView
@Override
public void onResume() {
super.onResume();
adapterOBJ.notifyDataSetChanged();
}
onResume() - 当活动进入恢复状态时,它会进入 前台,然后系统调用onResume()回调。这个 是应用与用户交互的状态。
答案 1 :(得分:3)
不要在getView中调用notify,因为这将为列表的每个项目呈现。相反,一旦您从服务器获取整个数据以刷新一次,通常应该这样做。
如果要在按下后退按钮时刷新,请在“活动生命周期”方法中添加notifyDataSetChangedMethod。您可以将它添加到onResume以及。
在里面添加这个onResume应该为你做的伎俩。
adapter.notifyDataSetChanged();
我希望这会对你有所帮助。 :)