리스트뷰 항목중에서 edittext로 키워드를 입력하여 검색하는 부분인데
edittext에 문자를 입력하다가 다 지우면 새로 리스트뷰가 생성되고나서
리스트뷰 첫번째 항목이 자동으로 선택되서 다음 액티비티로 넘어가지네요ㅠㅠ.....
왜 첫번째 항목이 자동으로 선택되는걸까요???
어떻게 해야 입력한 문자를 지워도 첫번째 항목이 선택이 안되고 원래 리스트뷰가 그대로 보여지게 되나요???
이것때문에 진도가 안나가네요ㅜㅜ
알려주세요~~~~~
public class CategorySelectActivity extends ListActivity {
private String kor="";
private String eng="";
private String compare2="";
private String categoryname="";
private String search="";
private int position=0;
private int i=0;
private TextView categorynameTextView;
private EditText searchEditText;
private Handler skhandler = new Handler();
ArrayAdapter<String>adapter;
ArrayList<String>categorylist = new ArrayList<String>();
ArrayList<String>korsentencelist = new ArrayList<String>();
ArrayList<Sentence>sentencelist = new ArrayList<Sentence>();
ArrayList<String>searchkorsentencelist = new ArrayList<String>();
ArrayList<String>searchengsentencelist = new ArrayList<String>();
//ArrayList<Sentence>search2sentencelist = new ArrayList<Sentence>();
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
categorylist = getIntent().getStringArrayListExtra("categorylist"); //카테고리 리스트 get
position = getIntent().getExtras().getInt("position"); //선택된 카테고리 위치 get
categoryname = categorylist.get(position).toString();
//System.out.println("position: " + position);
//System.out.println("categoryname: " + categoryname);
readSentence(position); //선택된 카테고리에 맞는 문장 sentence 리스트에 추가
setContentView(R.layout.activity_category_select);
categorynameTextView = (TextView)findViewById(R.id.category_select);
categorynameTextView.setText(categoryname);
searchEditText = (EditText)findViewById(R.id.search);
search = searchEditText.getText().toString();
//ArrayAdapter
adapter = new ArrayAdapter<String>(this,R.layout.activity_category_list_item,R.id.category_list_item,korsentencelist);
setListAdapter(adapter);
getListView().setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3){
String english = sentencelist.get(arg2).english;
String korean = sentencelist.get(arg2).korean;
Intent intent = new Intent(CategorySelectActivity.this, CategorySentenceActivity.class);
intent.putExtra("korean", korean);
intent.putExtra("english", english);
intent.putExtra("categoryname", categoryname);
startActivity(intent);
}
public void onNothingSelected(AdapterView<?> arg0){ }
});
skhandler.postDelayed(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
//imm.showSoftInput(searchEditText, 0);
//imm.showSoftInputFromInputMethod(searchEditText.getApplicationWindowToken(), InputMethodManager.SHOW_FORCED);
//imm.showSoftInput(searchEditText, InputMethodManager.SHOW_FORCED);
imm.toggleSoftInputFromWindow(searchEditText.getApplicationWindowToken(), InputMethodManager.SHOW_FORCED, 0);
}
}, 100);
//search
searchEditText.addTextChangedListener(new TextWatcher() {
//텍스트가 변경될때마다 발생할 이벤트를 작성
public void onTextChanged(CharSequence s, int start, int before, int count) {
CategorySelectActivity.this.adapter.getFilter().filter(s);
}
@Override
//텍스트의 길이가 변경되었을 경우 발생할 이벤트를 작성
public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
@Override
//텍스트 변경 후 발생할 이벤트를 작성
public void afterTextChanged(Editable s) {}
});
//뒤로 버튼을 눌렀을 때
Button exitBtn = (Button)findViewById(R.id.exit_category);
exitBtn.setOnClickListener(new Button.OnClickListener(){
public void onClick(View v) {
finish();
}
});
}
protected void onListItemClick(ListView l, View v, int position, long id){
String english = sentencelist.get(position).english;
String korean = sentencelist.get(position).korean;
Intent intent = new Intent(CategorySelectActivity.this, CategorySentenceActivity.class);
intent.putExtra("korean", korean);
intent.putExtra("english", english);
intent.putExtra("categoryname", categoryname);
startActivity(intent);
}
protected void readSentence(int position)
{
InputStream is = null;
BufferedReader br = null;
StringTokenizer st;
try{
is = getResources().openRawResource(R.raw.datatext);
br = new BufferedReader(new InputStreamReader(is, "euc-kr"));
String line=new String("");
while((line=br.readLine())!=null){ //마지막까지
if(line.contains("ID:")){ //id가 포함되어있으면
st = new StringTokenizer(line.replaceAll("ID:",""), " ");
if(st.hasMoreTokens()) //토큰이 더 있으면
{
String str = st.nextToken().toString(); //id
compare2 = st.nextToken().toString() + st.nextToken().toString(); //ex) 관광지: + ****
//사용자가 선택한 카테고리와 compare2가 같으면 해당 한글, 영어 문장 리스트에 추가
if(categoryname.equals(compare2))
{
eng = br.readLine();
kor = br.readLine();
//System.out.println("eng: " + eng);
//System.out.println("kor: " + kor);
korsentencelist.add(kor);
sentencelist.add(new Sentence(eng, kor));
}
}
}
}
} catch(IOException e) {
e.printStackTrace();
}
finally{
try{
br.close();
is.close();
}catch(Exception e){
e.printStackTrace();
}
}
}
}
class Sentence{
String korean;
String english;
public Sentence(String eng, String kor)
{
english = eng;
korean = kor;
}
}