[英]How to save listview item checked
我正在使用Listview使用android.R.layout.simple_list_item_checked顯示帶有復選標記的雜貨項目。 問題是當我檢查項目並轉到上一頁並返回到列表時,我的項目不再受檢查了。我想使用除sharedpreference之外的其他方法,那該怎么辦?我該怎么做?
我嘗試使用SparseBooleanArray,但沒有成功,我可能使用了錯誤的代碼。 由於我使用了上一個電話按鈕,並且在單擊了調用列表活動的按鈕后,我應該在onCreate方法中使用某些內容,但是我不確定是什么以及如何使用?
我也嘗試使用oninstanceResore方法,就像有人建議我一樣,但我不希望它變薄,讓我在活動2上說即時消息,這是我的項目列表,其中某些項目已選中,我決定回去用手機做其他事情上一個按鈕,然后使用我的應用程序中的按鈕返回活動2 ...我希望我的物品仍處於選中狀態。 有人可以幫助我,我將非常感謝…
public class FruitList_Activity extends AppCompatActivity {
private ListView fruitsList;
private ArrayAdapter<String> adapterFruit;
private Button btn_Delete;
private Button btn_SelectAll;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate (savedInstanceState);
setContentView (R.layout.activity_fruit_list_);
fruitsList = findViewById(R.id.list_Fruits);
fruitsList.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
btn_Delete = findViewById (R.id.btn_delete);
CreateActivity.itemsFruit = FileHelper.readData(this);
adapterFruit = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_checked, CreateActivity.itemsFruit);
fruitsList.setAdapter(adapterFruit);
/*Remove items*/
btn_Delete.setOnClickListener(new View.OnClickListener()
{
public void onClick(View v)
{
SparseBooleanArray checkedItemPositions = fruitsList.getCheckedItemPositions();
int itemCount = fruitsList.getCount();
for(int i=itemCount-1; i >= 0; i--){
if(checkedItemPositions.get(i)){
fruitsList.setItemChecked(i,true);
adapterFruit.remove(CreateActivity.itemsFruit.get(i));
FileHelper.writeData(CreateActivity.itemsFruit, FruitList_Activity.this );
}
}
adapterFruit.notifyDataSetChanged();
}
});
}
}
您能指導我如何做到這一點嗎?我只是從Java入手,所以請向我解釋,以便我理解。 謝謝!
您需要使用列表的信息創建一個Bundle,在調用第二個活動之前,您需要在該Bundle中設置數據,當您回到主活動時,只需檢查該Bundle,如果null為null則不同因為您需要加載數據。
我希望這個校准對您有幫助:D
這是保存的Instance()
同樣,當您擁有onConfigurationChanged()時,此校准也會為您提供幫助
使用onSaveInstanceState保存您的adapterFruit
@Override
public void onSaveInstanceState(@NonNull Bundle outState) {
super.onSaveInstanceState(outState);
outState.putSerializable("adapter",(Serializable) adapterFruit);
}
返回活動時,將執行onRestoreInstance
@Override
protected void onRestoreInstanceState(@NonNull Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
if(saveInstanceState != null){
adapterFruit = (ArrayAdapter<Adapter> )savedInstanceState.getSerializable("adapter");
}
}
希望能幫助到你。
你可以這樣
holder.checkBox.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(holder.checkBox.isChecked()==true) {
holder.checkBox.setChecked(true);
model_image.get(position).setSelected(true);
}
else
{
holder.checkBox.setChecked(false);
model_image.get(position).setSelected(false);
}
}
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.