有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java在安卓中关闭应用程序后如何保存复选框的值?

我想在关闭应用程序后保存复选框的状态 我该怎么办? 我不知道如何使用列表视图和arrayadapter做到这一点 如何在这里使用SharedReferences

在主要活动中。爪哇

public class MainActivity extends AppCompatActivity {


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.word_list);


        MyAdView.SetAd((AdView)findViewById(R.id.adView));


        ListView list = (ListView) findViewById(R.id.list);

        ArrayList<Word> worda = new ArrayList<>();

        worda.add(new Word("The B",R.drawable.ic_launcher_background));
        worda.add(new Word("The B",R.drawable.ic_launcher_background));



        WordAdapter adapter = new WordAdapter(this, worda);
        list.setAdapter(adapter);



        list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) {

                if (position == 0) {
                    Intent intent = new Intent(MainActivity.this, TheBossBabyS1.class);
                    startActivity(intent);
                }

            }        });
    }
}

总之。爪哇

public class Word {

    private String mConversation;

    private int mImageResourceId = NO_IMAGE_PROVIDED;

    public static final int NO_IMAGE_PROVIDED = -1;



    public Word(String conversation){

        mConversation = conversation;

    }

    public Word(String conversation, int imageResourceId){

        mConversation = conversation;

        mImageResourceId = imageResourceId;

    }


    public String getConversation(){
        return  mConversation;
    }

    public int getImageResourceId(){ return mImageResourceId; }

    public boolean hasImage(){
        return mImageResourceId != NO_IMAGE_PROVIDED;
    }


}



在WordAdapter中。爪哇

public class WordAdapter extends ArrayAdapter {

    private int mColorResourceId;

    public WordAdapter(Context context, ArrayList<Word> worda){

        super(context, 0, worda);

    }

    @SuppressLint("ResourceAsColor")
    @NonNull
    @Override
    public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {


        View listItemView = convertView;

        if(listItemView == null)
            listItemView = LayoutInflater.from(getContext()).inflate(R.layout.list_item, parent, false);

        Word currentWord = (Word) getItem(position);


        TextView convTextView = (TextView) listItemView.findViewById(R.id.conv_text_view);

        convTextView.setText(currentWord.getConversation());


        ImageView imageView = (ImageView) listItemView.findViewById(R.id.image);

        if(currentWord.hasImage()) {
            imageView.setImageResource(currentWord.getImageResourceId());

            imageView.setVisibility(View.VISIBLE);
        }
        else {
            imageView.setVisibility(View.GONE);
        }

        CheckBox checkbox = (CheckBox) listItemView.findViewById(R.id.checkBox2);
        checkbox.setFocusable(false);
        checkbox.setFocusableInTouchMode(false);


        View textContainer = listItemView.findViewById(R.id.text_container2);

        textContainer.setBackgroundColor(((position % 2) == 0) ? Color.parseColor("#B2DFDB") : Color.parseColor("#80CBC4"));

        return listItemView;

    }
}


在列表项中。xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:安卓="http://schemas.安卓.com/apk/res/安卓"
xmlns:tools="http://schemas.安卓.com/tools"
安卓:layout_width="match_parent"
安卓:layout_height="wrap_content"
安卓:background="@color/tan_background"
安卓:orientation="horizontal"
安卓:id="@+id/text_container2"

    >

    <ImageView
        安卓:id="@+id/image"
        安卓:layout_width="22dp"
        安卓:layout_height="match_parent"
        安卓:layout_weight="1"
        安卓:contentDescription="@null"
        tools:src="@mipmap/ic_launcher" />

    <TextView

        安卓:id="@+id/conv_text_view"
        style="@style/CategoryStyle"
        安卓:layout_width="0dp"
        安卓:layout_weight="8"
        安卓:layout_height="wrap_content"
        tools:text="lutti" />

    <CheckBox
        安卓:id="@+id/checkBox2"
        安卓:layout_width="0dp"
        安卓:layout_weight="1"
        安卓:layout_height="24dp"
        安卓:layout_alignParentRight="true"
        安卓:layout_centerVertical="true"
        安卓:layout_marginRight="16dp"
       />


</LinearLayout>

共 (1) 个答案

  1. # 1 楼答案

    使用SharedReferences存储结果

    boolean isChecked=false;
    SharedPreferences pref = getSharedPreferences("prefs", MODE_PRIVATE); 
    Editor editor = pref.edit();
    if(checkBox.isChecked()){
    
    isChecked=true;
    
    }
     editor.putBoolean("checked", isChecked);
     editor.apply()
    

    正在从SharedReferences检索数据。 在setContentView()下面编写以下代码

    if(prefs.getBoolean("checked","")==true){
      checkBox.setChecked(true);
    }