我看過很多關於這種情況的文章,但是我沒有找到適合我的解決方案。我使用SwipeRefreshLayout.OnRefreshListener
,這是我在onRefresh()
方法中的代碼。這不起作用。當我更新ArrayList時,adapter.notifyDataSetChanged()不起作用
new Handler().postDelayed(new Runnable() {
@Override public void run() {
Aviso aviso = new Aviso();
aviso.setTitle("MMMMMMMMMMMMMMMMMMMMMM");
aviso.setDescription("Deskribapena");
aviso.setPubDate("Wed, 19 Mar 2016 12:40:00 GMT");
aviso.setDcDate("2016-03-19T12:40:00Z");
avisosList.add(aviso);
swipeRefresh.setRefreshing(false);
adapter.notifyDataSetChanged();
}
}, 2000);
但如果我創建新的適配器,並在ListView設置的結果是好的
new Handler().postDelayed(new Runnable() {
@Override public void run() {
Aviso aviso = new Aviso();
aviso.setTitle("MMMMMMMMMMMMMMMMMMMMMM");
aviso.setDescription("Deskribapena");
aviso.setPubDate("Wed, 19 Mar 2016 12:40:00 GMT");
aviso.setDcDate("2016-03-19T12:40:00Z");
avisosList.add(aviso);
adapter = new AvisosEnListaAdapter(getActivity(), avisosList);
lv.setAdapter(adapter);
swipeRefresh.setRefreshing(false);
}
}, 2000);
適配器代碼:
public class AvisosEnListaAdapter extends BaseAdapter{
protected Activity activity;
protected ArrayList<Aviso> items;
//Constructor
public AvisosEnListaAdapter (Activity activity, ArrayList<Aviso> items){
this.activity = activity;
this.items = items;
}
public AvisosEnListaAdapter(ArrayList<Aviso> items) {
this.items = items; // TODO Auto-generated constructor stub
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return items.size();
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return items.get(position);
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return items.get(position).get_Id();
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
View v = convertView;
if(convertView == null){
LayoutInflater inf = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = inf.inflate(R.layout.custom_avisosenlista, null);
}
//Create Aviso object
Aviso aviso = items.get(position);
//write title
TextView title = (TextView) v.findViewById(R.id.custom_avisosenlista_tv_title_aviso);
//Fuente
Typeface fontTitulo = Typeface.createFromAsset(activity.getAssets(), "fonts/OpenSans-Regular.ttf");
//Setter fuente
title.setTypeface(fontTitulo);
title.setText(aviso.getTitle());
//write data
TextView tvData = (TextView) v.findViewById(R.id.custom_avisosenlista_tv_data_aviso);
Typeface fontData = Typeface.createFromAsset(activity.getAssets(), "fonts/OpenSans-LightItalic.ttf");
//Setter fuente
tvData.setTypeface(fontData);
tvData.setText(aviso.getFechaParaPublicar());
return v;
}
}
問題出在哪裏?
那麼,存在一個小問題,該元素出現在最後的位置,我想出現在第一個位置。
顯示適配器代碼 –
我編輯了我的帖子 – aldakur