我有一個列表視圖和Baseadapter但adapeter.notiydatasetchanged()
不是爲我正常工作.....我得到我的列表視圖:(notifydatasetchanged()無法正常工作
我的適配器類兩倍多一個適配器項目的更多擴展baseadapter
public class Event_update_adapter extends BaseAdapter {
private StartActivity activity = null;
private List<String> pokemonList = null;
public Event_update_adapter(StartActivity activity, List<String> p) {
super();
this.activity = activity;
this.pokemonList = p;
}
public void add(String data) {
this.pokemonList.add(data);
}
@Override
public int getCount() {
return pokemonList.size();
}
@Override
public String getItem(int i) {
return pokemonList.get(i);
}
@Override
public long getItemId(int i) {
return i;
}
@Override
public View getView(int position, View view, ViewGroup viewGroup) {
final ViewHolder holder;
final String pokemon = (String) getItem(position);
if (view == null) {
LayoutInflater layoutInflater = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = layoutInflater.inflate(R.layout.event_updater_lv_item, viewGroup, false);
holder = new ViewHolder();
holder.name = (TextView) view.findViewById(R.id.event_update_in_list);
view.setTag(holder);
} else {
// get view holder back
holder = (ViewHolder) view.getTag();
}
// bind text with view holder content view for efficient use
holder.name.setText(pokemon);
return view;
}
private class ViewHolder {
TextView name=null;
}
}
這裏是實現ListView和適配器的數據:
public class StartActivity extends AppCompatActivity
{
private Event_update_adapter adapter = null;
private List<String> adapter_data = new Vector<>();
private ListView mListView = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_start);
this.mContext = this;
initviews();
}
private void initviews() {
// adapter_data = new Vector<String>();
adapter = new Event_update_adapter((StartActivity) mContext,
adapter_data);
mListView = (ListView) findViewById(R.id.eventList);
mListView.setAdapter(adapter);
}
比使用接收器我更新適配器數據和呼叫notifydatasetchanged()
。
接收器代碼:
BroadcastReceiver mReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
// Grab the bundle from the intent.
//Bundle bundle = intent.getExtras();
//Initializes the ViewPager.
if (intent.hasExtra(CommonForApp.UPDATE_LISTVIEW)) {
adapter.add(intent.getStringExtra(CommonForApp.UPDATE_LISTVIEW));
adapter.notifyDataSetChanged();
}
}
注:我的接收機被其他意圖工作正常,所以他們是在接收器沒有問題。
我使用應用程序上下文發送廣播並從服務postexceute()
函數中的後臺線程發送廣播,但是至少在ListView中一個項目被推送兩次以上!
任何幫助將不勝感激!謝謝!
爲什麼不使用'ArrayAdapter'來代替?它有方便的'add()'方法 – pskink
好吧等一等lemme嘗試@pskink –