上下文:我有2个类,一个类Listactivity和另一个类AudioListActivity,我定义了一个自定义arrayadapter。 所以在带有oncreate的ListActivity中,我调用了一次我的自定义arrayadapter setListAdapter(MyListAdapter = new ....)用10个项目填充我的listview。它运作良好。 我的问题是在onclick上,在listactivity中:1 /我调用一个线程来重新加载一个包含10个其他项目的数组(效果很好)2 /我想用这个数组刷新我的listview(不再使用setListAdapter,因为我不想在内存中创建另一个适配器对象)。 所以我想到notifydatasetchanged()。 但是当我尝试MyListAdapter时。 “完成”它没有给出notifydatasetchanged。 那我该怎么办?如何通知我的arrayadapter刷新列表视图? 需要一些帮助 !谢谢 !
heres Listactivity
ListView ClassListView;
ListAdapter MyListAdapter;
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.activity_audio);
ClassListView = getListView();
ClassListView.addFooterView(footer);
//chargement des données de la premiere page de la listview via LA thread
threadChargeListe(0, "PremierePage", "aucun");
setListAdapter(MyListAdapter=new AudioListAdapter(this, 0, MyApplication.getMyArrayDonneesListeAudio()));
//Mise en place des listeners
addListener();
}
private void addListener() {
//listener bouton page suivante
ImageButton MyPageSuivante = (ImageButton) findViewById(R.id.pagesuivante);
MyPageSuivante.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//chargement des données de la page suivante via LA thread
int I = MyApplication.getMyArrayDonneesListeAudio().size();
int idref = MyApplication.getMyArrayDonneesListeAudio().get(I - 1).getIdDemandeAudio(); /* calcul de la ref de l'audio pivot */
chargeListe(idref, "PageSuivante", "aucun");
MyListAdapter. >>>>> HERE i CAN T ACCESS notifydatasetchanged ???
}
});
这是我的arraydapter的第一行
public class AudioListAdapter extends ArrayAdapter<DonneesListeAudio> {
// Variables
private Activity activity;
private ArrayList<DonneesListeAudio> DataOfListView;
private static LayoutInflater Inflater = null;
int classPosition = 0;
ViewWrapper Holder;
private long classTimeHeureLecture = 0;
private AsyncTask<Integer, Void, Void> MyAsynchTask;
private AtomicBoolean isThreadRunnning = new AtomicBoolean();
private AtomicBoolean isThreadPausing = new AtomicBoolean();
String classAudioFileName;
//Constructeur
public AudioListAdapter(Activity activity, int textViewResourceId, ArrayList<DonneesListeAudio> _Liste) {
super(activity, textViewResourceId, _Liste);
try {
this.activity = activity;
this.DataOfListView = _Liste;
Inflater = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
} catch (Exception e) {
}
}
//construction de la vue de l'item
public View getView(int position, View convertView, ViewGroup parent) {
classPosition = position;
View ItemView = convertView;
try {
if (convertView == null) { AND SO ON .....
答案 0 :(得分:4)
ListAdapter
没有会员notifyDataSetChanged()
。您必须将MyListAdapter
转换为ArrayAdapter
才能访问它。
((ArrayAdapter<DonneesListeAudio>) MyListAdapter).notifyDataSetChanged();
检查拼写错误