简体   繁体   中英

How Can I prevent ListView from deleting data when adding or removing elements of ListView?

Here is my code and I don`t know why the data always deleted whenever I use The add or remove method of CustomAdapter which extends ArrayAdapter.

public class SetFragment extends Fragment {

private CustomAdapter listAdapter = null;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.set_fragment  ,  container  , false);


    List<String> num_set= new ArrayList<>();
    num_set.add("Set1");

    listAdapter = new CustomAdapter(getActivity(), num_set);
    ListView listView = (ListView)view.findViewById(R.id.setListView);
    listView.setAdapter(listAdapter);


    listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
        @Override
        public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
            listAdapter.remove(listAdapter.getItem(position));
            listAdapter.notifyDataSetChanged();
            return false;
        }
    });
    return view;
}

public void addListData(String entry) {
    int numsets = listAdapter.getCount()+1;
    listAdapter.add(entry+numsets);
}

}

public class CustomAdapter extends ArrayAdapter<String> {

public CustomAdapter(Context context, List<String> num_set ) {
    super(context, R.layout.custom_row_for_set  ,num_set);
}


@Override
public View getView(int position, View convertView, ViewGroup parent) {
    LayoutInflater buclysInflater = LayoutInflater.from(getContext());
    View CustomView = buclysInflater.inflate(R.layout.custom_row_for_set ,parent , false);

    String setNum = getItem(position);
    TextView setText = (TextView)CustomView.findViewById(R.id.setTExtView);

    setText.setText(setNum);
    return CustomView;
}

}

when I click the Add set button , the data just goes away.I want to keep it. How Can I do that?? you can take a look at the pics attached.

图片1

图片2

Add listAdapter.notifyDataSetChanged(); in your addListData() method.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM