Reputation: 198
i have a tab Layout contains a list view that update each time a tab is selected but new items will be added to list and the list won't be cleared before adding new items
public class DemoObjectFragment extends Fragment {
ListView lv;
private String TAG = DemoObjectFragment.class.getSimpleName();
public static ArrayList<HashMap<String, String>> contList = new ArrayList<>();
android.widget.ListAdapter adapter;
@Override
public View onCreateView(LayoutInflater inflater,
ViewGroup container, Bundle savedInstanceState) {
View vw = inflater.inflate(R.layout.coin, container, false);
try {
for (int i = 0; i < contactList.size(); i++) {
Log.v(TAG, "Response: " + contactList.get(i));
if (Integer.valueOf(contactList.get(i).get("asset_id")) == MainActivity.typeCurrency) {
contList.add(contactList.get(i));
}
}
}catch (Exception e){
e.getMessage();
}
lv=vw.findViewById(R.id.exchangeList);
lv.setAdapter(null);
adapter = new SimpleAdapter(getActivity(), contList, R.layout.list_item, new String[]{"sourceName", "priceCurrency"},
new int[]{R.id.sourceName, R.id.priceCurrency});
lv.setAdapter(adapter);
contactList=new ArrayList<>();
return vw;
}
}
Upvotes: 2
Views: 236
Reputation: 3625
public class DemoObjectFragment extends Fragment {
ListView lv;
private String TAG = DemoObjectFragment.class.getSimpleName();
public static ArrayList<HashMap<String, String>> contList;
android.widget.ListAdapter adapter;
@Override
public View onCreateView(LayoutInflater inflater,
ViewGroup container, Bundle savedInstanceState) {
View vw = inflater.inflate(R.layout.coin, container, false);
try {
contList = new ArrayList<>();
for (int i = 0; i < contactList.size(); i++) {
Log.v(TAG, "Response: " + contactList.get(i));
if (Integer.valueOf(contactList.get(i).get("asset_id")) == MainActivity.typeCurrency) {
contList.add(contactList.get(i));
}
}
}catch (Exception e){
e.getMessage();
}
lv=vw.findViewById(R.id.exchangeList);
lv.setAdapter(null);
adapter = new SimpleAdapter(getActivity(), contList, R.layout.list_item, new String[]{"sourceName", "priceCurrency"},
new int[]{R.id.sourceName, R.id.priceCurrency});
lv.setAdapter(adapter);
contactList=new ArrayList<>();
return vw;
}
}
that will work fine ;)
Upvotes: 1
Reputation: 2171
You need to clear items before adding new items to the list,
contList.clear();
Try adding clear() method.
try {
contList.clear();
for (int i = 0; i < contactList.size(); i++) {
Log.v(TAG, "Response: " + contactList.get(i));
if (Integer.valueOf(contactList.get(i).get("asset_id")) == MainActivity.typeCurrency) {
contList.add(contactList.get(i));
}
}
}catch (Exception e){
e.getMessage();
}
Upvotes: 1