package com.example.multipage;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.Map;

import android.app.Activity;
import android.content.Context;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.util.Log;
import android.util.SparseBooleanArray;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;

public class Sellsee extends Activity {
 // 상품 정보 리스트 뷰
 private ListView mProductInfoListView;
 // 상품 정보 리스트 어댑터
 private ArrayAdapter<String> mProductInfoListAdapter;
 // /상품 정보 아이템 리스트
 private ArrayList<String> mProductInfoItems;
 // 상품 정리 버튼
 private Button mbtnfree;
 // SharedPreferences 이름
 public static final String PRODUCT_INFO_SHARED_PREFERENCES_NAME = "productInfoPrefs";

 /** Called when the activity is first created. */
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.sellsee);
  // TODO Auto-generated method stub

  mProductInfoListView = (ListView) findViewById(R.id.slist);
  mProductInfoListAdapter = new ArrayAdapter<String>(this,
    android.R.layout.simple_list_item_multiple_choice,
    mProductInfoItems = new ArrayList<String>());

  mProductInfoListView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
  mProductInfoListView.setAdapter(mProductInfoListAdapter);

  mbtnfree = (Button) findViewById(R.id.btnfree);
  mbtnfree.setOnClickListener(new OnClickListener() {
   @Override
   public void onClick(View v) {
    // TODO Auto-generated method stub
    SparseBooleanArray check = mProductInfoListView
      .getCheckedItemPositions();
    Log.e("Mytag",""+check.size());
    if(check.size()!=0){
     for(int i=mProductInfoListView.getCount()-1; i>=0; i--){
      if(check.get(i)){
      //mProductInfoItems.remove(i);
      mProductInfoItems.remove(check.keyAt(i));
      check = mProductInfoListView.getCheckedItemPositions();
      }
     }
    mProductInfoListView.clearChoices();
    mProductInfoListAdapter.notifyDataSetChanged();
    }
    
   }
  });
 }

 protected void onResume() {
  // TODO Auto-generated method stub
  super.onResume();

  // 상품 정보 리스트 강제 업데이트
  // (TODO: SharedPreferences의 변경 여부 리스너를 구현하여 불필요한 강제 업데이트 제한 )
  getProductInfoItemsFromSharedPreferences();
  mProductInfoListAdapter.notifyDataSetInvalidated();
 }

 private void getProductInfoItemsFromSharedPreferences() {
  mProductInfoItems.clear();

  // 상품 정보를 위한 SharedPreferences 파일을 가져온다(파일이 없는 경우 자동 생성)
  SharedPreferences prefs = this.getSharedPreferences(
    PRODUCT_INFO_SHARED_PREFERENCES_NAME, Context.MODE_PRIVATE);

  // SharedPreferences에 저장된 모든 데이터 추출
  Map<String, ?> values = prefs.getAll();
  Iterator<String> iterator = values.keySet().iterator();
  while (iterator.hasNext()) {
   String key = (String) iterator.next();
   // 상품 정보 KEY인지 판별
   if (key != null && key.startsWith("PK_"))
    ;
   {
    try {
     // ->TODO: 편집, 정렬 등에 이용
     // String productId = key.substring("PK_".length(),
     // key.length());

     // 상품 정보 데이터 추출
     String productInfoData = (String) values.get(key);
     String[] productInfos = productInfoData
       .split("_@#@_" /* 구분자 */);

     String productName = productInfos[0];
     String productPrice = productInfos[1];

     // 리스트 아이템 정보 출력으로 변환 저장
     mProductInfoItems.add("상품:" + productName + " / " + "가격:"
       + productPrice);
    } catch (Exception e) {
     e.printStackTrace();
    }
   }
  }
 }
}

 

 

굵은부분이 삭제부분인데, 기능은 되는데, 이 액티비티를 다시 띄엇을때는 지운것도 그대로 다시 생겨버립니다. 아마 Sharepreference의 키값과 밸류값 두개를 다 지우든가 하나를 지우든가 해야되는거같은데...

어디부분을 어떻게 만져야할지 좀 도와주세요...이래저래 생각은 해보고잇는데 만지질못하겟네유 ㅠㅠ

아 그리고..위에 삭제가 된다고는 햇는데 해당된게 삭제 되는게 아니라 다른값을 지워버립니다...어떻게 고쳐야되죠? ㅠ