다른 액티비티의 리스트뷰(1) 값을 받아와 리스트뷰(2)에 뿌려주는 형식입니다.
리스트뷰(1)에서 10개의 아이템이 있다면 해당 아이템을 누르면 리스트뷰(2)에
등록,추가해주도록 구현하려는데 아마 SharedPreference를 사용해야 할듯 해서
여쭈어 봅니다. 혼자 천천히 보고 따라하면서 배우는 중인데 안써본 것들에 대해
도통 적용력이 늘지않아 계속 여쭙습니다 도와주시면 감사하겠습니다.
우선 생각해본건 중간에 getintent 이하에서 받은 값을 sharedpreference로 저장
하고 리스트뷰(2)에 연결된 어댑터에 적용을 해야하는가? 생각해봤는데 방법을..
도와주세요!!
public class mylist extends AppCompatActivity{
private final String mdbName = "myassign";
private final String mtablename = "myclass";
private String[] msubject = new String[]{};
private String[] mday = new String[]{};
ArrayList<HashMap<String, String>> mclassList;
ListView mlist;
private static final String mTAG_SUB = "msubject";
private static final String mTAG_DAY = "mday";
SQLiteDatabase mclassDB = null;
ListAdapter madapter;
// 액티비티에서 사용할 값을 저장
private SharedPreferences prvPref;
// 애플리케이션 전체에서 사용할 값
private SharedPreferences sharedPref;
private SharedPreferences.Editor prvEditor;
private SharedPreferences.Editor sharedEditor;
final SharedPreferences mPrefs = getSharedPreferences("sub",MODE_PRIVATE);
SharedPreferences.Editor mEditor = mPrefs.edit();
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.mylist);
mlist = (ListView) findViewById(R.id.lstv1);
mclassList = new ArrayList<HashMap<String, String>>();
// 가져온 데이터를 myDB에 넣자
Intent intent = getIntent();
String myday = intent.getStringExtra("TAG_DAY");
String mysub = intent.getStringExtra("TAG_SUB");
List<String> Getday = new ArrayList<String>();
Getday.add(myday);
List<String> Getsub = new ArrayList<String>();
Getsub.add(mysub);
mday = new String[Getday.size()];
Getday.toArray(mday);
msubject = new String[Getsub.size()];
Getsub.toArray(msubject);
Toast.makeText(getApplicationContext(), "선택 강의:\n수업시간 : " + myday + " \n과목명: " + mysub, Toast.LENGTH_LONG).show();
mEditor.putString("sub",mysub);
mEditor.putString("day",myday);
mEditor.commit();
// 값 저장하기
try {
mclassDB = this.openOrCreateDatabase(mdbName, MODE_PRIVATE, null);
mclassDB.execSQL("CREATE TABLE IF NOT EXISTS " + mtablename
+ " (msubject VARCHAR(20), mday VARCHAR(20) );");
mclassDB.execSQL("DELETE FROM " + mtablename );
//새로운 데이터를 테이블에 집어넣습니다..
for (int i = 0; i < msubject.length; i++) {
mclassDB.execSQL("INSERT INTO " + mtablename
+ " (msubject, mday) Values ('" + msubject[i] + "', '" + mday[i] + "');");
}
mclassDB.close();
} catch (SQLiteException se) {
Toast.makeText(getApplicationContext(), se.getMessage(), Toast.LENGTH_LONG).show();
Log.e("", se.getMessage());
}
showList();
}
protected void showList() {
try {
SQLiteDatabase ReadDB = this.openOrCreateDatabase(mdbName, MODE_PRIVATE, null);
Cursor c = ReadDB.rawQuery("SELECT * FROM " + mtablename, null);
/**○ 이 부분이 없으면 vmylistv에 정보를 그려넣을 수 없음*/
if (c != null) {
if (c.moveToFirst()) {
do {//테이블에서 가져옴
String mSUBJECT = c.getString(c.getColumnIndex("msubject"));
String mDAY = c.getString(c.getColumnIndex("mday"));
HashMap<String, String> cls1 = new HashMap<String, String>();
cls1.put(mTAG_SUB, mSUBJECT);
cls1.put(mTAG_DAY, mDAY);
//어레이리스트에 추가
mclassList.add(cls1);
} while (c.moveToNext());
}
}
/**○ 여기까지*/
ReadDB.close();
madapter = new SimpleAdapter(this, mclassList, R.layout.vmylistv, new String[]{mTAG_SUB, mTAG_DAY}, new int[]{R.id.mtv1, R.id.mtv2});
mlist.setAdapter(madapter);
} catch (SQLiteException se) {
Toast.makeText(getApplicationContext(), se.getMessage(), Toast.LENGTH_LONG).show();
Log.e("", se.getMessage());
}
}
}