2012-02-28 1 views
0

텍스트 워처를 사용하여 목록을 검색하고 표시하는 데 문제가 있습니다. 목록에서 간단한 검색 작업입니다. 먼저 데이터는 .txt에서 한 줄씩 검색됩니다. 문자열의 첫 단어는 내가 목록보기 여기Android : 도움말 텍스트 감시자는 afterTextChanged와 논리적 오류를 비교합니다.

에 결과를이 내용 목록 검색 작업을 수행하고 표시 할 지금 목록 내용에 저장하는 코드

enter code here 

package com.android; 

import java.io.FileNotFoundException; 
import java.io.IOException; 
import java.io.InputStream; 
import java.io.InputStreamReader; 
import java.io.LineNumberReader; 
import java.util.ArrayList; 
import java.util.List; 
import java.util.StringTokenizer; 

import android.app.ListActivity; 
import android.os.Bundle; 
import android.text.Editable; 
import android.text.TextWatcher; 
import android.util.Log; 
import android.view.View; 
import android.widget.ArrayAdapter; 
import android.widget.AutoCompleteTextView; 
import android.widget.ListView; 
import android.widget.TextView; 

public class MyListDemoActivity extends ListActivity { 
    /** Called when the activity is first created. */ 
    TextView tv; 
    // final String[] values=new String[]{"android","Windows", 
    // "ios","BlackBerry","Java",".Net","WebOS", "Ubuntu", "Windows7"}; 
    //String[] content; 
    List<String> content ; 

    AutoCompleteTextView actv; 
    List<String> arr_sort; 
    ArrayAdapter<String> adapter; 
    ListView lv; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 


     String line = " "; 
     LineNumberReader linenoreader = null; 
     StringTokenizer stringtokanixer = null; 
     content=new ArrayList<String>(); 
     lv=(ListView)findViewById(android.R.id.list); 

     try { 

      InputStream istream = getResources().openRawResource(R.raw.hihihi); 
      InputStreamReader streamreader = new InputStreamReader(istream); 

      linenoreader = new LineNumberReader(streamreader); 
      linenoreader.mark(15); 
     } catch (FileNotFoundException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     }// try catch ends here 



     Log.v("getting", "working"); 

     for (int i = 0; i < 6; i++) { 
      try { 
       line = linenoreader.readLine(); 
      } catch (IOException e) { 

       e.printStackTrace(); 
      } 
      Log.v("getting", line); 
      stringtokanixer = new StringTokenizer(line); 

      String st=stringtokanixer.nextToken(); 
      content.add(st);  
     }// for ends here 

        adapter=new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,content); 
     //   setListAdapter(adapter); 

        lv.setAdapter(adapter); 
        tv= (TextView)findViewById(R.id.textView1); 



        actv=(AutoCompleteTextView)findViewById(R.id.autoCompleteTextView1); 
        actv.addTextChangedListener(new TextWatcher() { 
         int len=0; 
         @Override 
         public void onTextChanged(CharSequence s, int start, int before, int count) { 
          // TODO Auto-generated method stub 

         } 

         @Override 
         public void beforeTextChanged(CharSequence s, int start, int count, 
           int after) { 
          // TODO Auto-generated method stub 

         } 

         @Override 
         public void afterTextChanged(Editable s) { 
          // TODO Auto-generated method stub 

          len=actv.getText().length(); 

          for(int i=0;i<content.size();i++) 
          { 
           if(len<=content.get(i).length()) 
           { 
            if(actv.getText().toString().equalsIgnoreCase((String) content.get(i).subSequence(0, len))) 
            { 

             arr_sort.add(content.get(i)); 

            } 


           } 

          } 

          adapter=new ArrayAdapter<String>(MyListDemoActivity.this,android.R.layout.simple_list_item_1,arr_sort); 
          setListAdapter(adapter); 
         } 
        }); // text watcher class ends here 



    }// on create ends here 
    public void onListItemClick(ListView ls,View v, int position,long id) { 
     tv.setText(content.get(position)); 

     //tv.setText(content[position]) // in case of string 

    }// endsd here onListItemClick(
} 

에게 있습니다 여기 main.xml입니다

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical" > 

    <AutoCompleteTextView 
     android:id="@+id/autoCompleteTextView1" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:text=" " > 

     </AutoCompleteTextView> 


    <TextView 
     android:id="@+id/textView1" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:text="TextView" /> 

    <ListView 
     android:id="@android:id/list" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:drawSelectorOnTop="false" 
     > 
    </ListView> 

</LinearLayout> 

여기에 txt 파일

입니다.
joke happy 
hota happy okgame 
ok happy okgame 
asitis happy 
okgame happy 
oktested happy happy 

나는 afterTextChanged에 논리적 오류가 있지만 그럴 수 없다고 생각합니다.

답변