【问题标题】:Checkbox not saving when reopening重新打开时复选框不保存
【发布时间】:2021-01-05 01:00:29
【问题描述】:

我在 Android Studio 中有 3 个类与我的应用程序的复选框部分相关,atm 复选框会加载,但是当我从主菜单进入它时选择和取消选择该值时不会保存。任何帮助都会很棒!!! 公共类 WatchList 扩展 AppCompatActivity {

    ArrayList dataModels;
    ListView listView;
    private WatchListAdapter adapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        Log.i("watchlist", "created watchlist activity");
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_watch_list);


        listView = (ListView) findViewById(R.id.listview2);

        dataModels = new ArrayList();

        dataModels.add(new WatchListClass(R.drawable.kookaburra,"Kookaburra","Albury", false));
        dataModels.add(new WatchListClass(R.drawable.cockatoo, "Cockatoo" , "Bathurst", true));
        dataModels.add(new WatchListClass(R.drawable.emu,"Emu", "Echuca", true));
        dataModels.add(new WatchListClass(R.drawable.magpie, "Magpie", "Sydney", true));

        adapter = new WatchListAdapter(dataModels, getApplicationContext());

        listView.setAdapter(adapter);
        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView parent, View view, int position, long id) {

                WatchListClass dataModel= (WatchListClass) dataModels.get(position);
                dataModel.checked = !dataModel.checked;
                adapter.notifyDataSetChanged();


            }
        });
    }
}
public class WatchListAdapter extends ArrayAdapter {

    private ArrayList dataSet;
    Context mContext;


    private static class ViewHolder {
        TextView birdWatchName, birdWatchLocation;
        ImageView birdWatchImage;
        CheckBox checkBox;
    }

    public WatchListAdapter(ArrayList data, Context context) {
        super(context, R.layout.watch_list, data);
        this.dataSet = data;
        this.mContext = context;

    }
    @Override
    public int getCount() {
        return dataSet.size();
    }

    @Override
    public WatchListClass getItem(int position) {
        return (WatchListClass) dataSet.get(position);
    }


    @Override
    public View getView(int position, View convertView, @NonNull ViewGroup parent) {

        ViewHolder viewHolder;
        final View result;

        if (convertView == null) {
            viewHolder = new ViewHolder();
            convertView = LayoutInflater.from(parent.getContext()).inflate(R.layout.watch_list, parent, false);
            viewHolder.birdWatchImage = (ImageView) convertView.findViewById(R.id.birdWatchImage);
            viewHolder.birdWatchName = (TextView) convertView.findViewById(R.id.birdWatchName);
            viewHolder.birdWatchLocation = (TextView) convertView.findViewById(R.id.birdWatchLocation);
            viewHolder.checkBox = (CheckBox) convertView.findViewById(R.id.checkbox);

            result=convertView;
            convertView.setTag(viewHolder);

        } else {
            viewHolder = (ViewHolder) convertView.getTag();
            result=convertView;
        }

        WatchListClass item = getItem(position);

        viewHolder.birdWatchImage.setImageResource(item.birdWatchImage);
        viewHolder.birdWatchName.setText(item.birdWatchName);
        viewHolder.birdWatchLocation.setText(item.birdWatchLocation);
        viewHolder.checkBox.setChecked(item.checked);


        return result;
    }
}
public class WatchListClass {

    public String birdWatchName, birdWatchLocation;
    int birdWatchImage;
    boolean checked;

    WatchListClass(int birdWatchImage, String birdWatchName,String birdWatchLocation, boolean checked) {
        this.birdWatchName = birdWatchName;
        this.birdWatchLocation = birdWatchLocation;
        this.birdWatchImage = birdWatchImage;
        this.checked = checked;
    }
}

【问题讨论】:

    标签: java android android-studio checkbox


    【解决方案1】:

    您可以为复选框共享首选项

    试试这个

    How to save checkbox value with shared preferences?

    您可以在应用程序中使用本地数据库来存储复选框值并检索它。

    【讨论】:

      猜你喜欢
      • 2011-03-19
      • 2020-03-11
      • 2017-11-12
      • 1970-01-01
      • 1970-01-01
      • 2017-04-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多