리스트뷰를 구혔해보았습니다.
각각의 아이템들을 체크가능하게 하고, 필요한 아이템을 체크한후 보내기 버튼을 누르면
다른 activity와 연결하도록 구현을 했습니다.
여기서 욕심이 더 나서 검색기능을 추가해 보려고했는데요,
문제는 검색은되는데, 아이템을 체크한후 검색을 한후에 검색리스트에서 아이템을 체크하고 보내기 버튼을 누르면
검색리스트에 체크된 아이템들만이 다음 엑티비티로 보내집니다 ㅠㅠ
초기에 체크한 아이템들은 도저히 보내지지가않네요 ㅠㅠㅠ 검색기능을 사용을 안하면 잘보내지는데,
제가 이것을 만드는 과정에서 어레이 리스트를 두개를 만들었거든요.
private ArrayList<String> list = new ArrayList<String>(); //이게 초기에 선택할수있는 어레이리스트이구요
private ArrayList<String> list_sort = new ArrayList<String>(); //검색창에 검색을 할때 쓰는 어레이 리스트입니다.
저는 list_sort에서 체크된 아이템들도 list에 체크하고싶은데요. 어떻게 하면 좋을까요?ㅠㅠ
아래에 코드첨부합니다. 고수님들 도와주세요~
void onCreate 밑에있는 코드들입니다.
adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_checked, list);
compare.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
String selectItem = "";
SparseBooleanArray checked = lv.getCheckedItemPositions();
// 체크된 리스트의 정보를 보여준다.
for (int j = 0; j < list.size(); j++) {
if (checked.get(j) == true) {
selectItem = selectItem + list.get(j) + " ";
}
}
if(!list_sort.isEmpty()){
for(int i=0; i<list_sort.size();i++)
if(checked.get(i) == true){
selectItem = selectItem + list_sort.get(i)+" ";
}
}
Intent intent = new Intent(CompActivity.this,
ComparedActivity.class);
intent.putExtra("selected_item", selectItem);
startActivity(intent);
}
});
lv.setAdapter(adapter);
et.addTextChangedListener(new TextWatcher() {
public void afterTextChanged(Editable s) {
// Abstract Method of TextWatcher Interface.
}
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
}
public void onTextChanged(CharSequence s, int start, int before,
int count) {
textlength = et.getText().length();
list_sort.clear();
for (int i = 0; i < data.length; i++) {
if (textlength <= data[i].length()) {
if (data[i].toString()
.contains(et.getText().toString())) {
list_sort.add(data[i]);
}
}
}
lv.setAdapter(new ArrayAdapter<String>(CompActivity.this,
android.R.layout.simple_list_item_checked, list_sort));
}
});