2013-11-09 3 views
0

XML 파일에서 listview 값을 가져옵니다. 이 내 자바와 XML 코드입니다 :안드로이드 필터링 목록보기

package com.gazi.tezproje; 

import android.app.ActionBar; 
import android.app.Activity; 
import android.os.Bundle; 
import android.text.Editable; 
import android.text.TextWatcher; 
import android.view.Menu; 
import android.view.MenuInflater; 
import android.view.MenuItem; 
import android.view.View; 
import android.widget.AdapterView; 
import android.widget.AdapterView.OnItemClickListener; 
import android.widget.ArrayAdapter; 
import android.widget.EditText; 
import android.widget.ImageButton; 
import android.widget.ListView; 
import android.widget.Toast; 

public class verbs extends Activity { 

public boolean onCreateOptionsMenu(Menu menu) { 
    ActionBar bar=getActionBar(); 
    bar.setDisplayHomeAsUpEnabled(true); 
    MenuInflater menu1 = getMenuInflater(); 
    menu1.inflate(R.menu.info, menu); 
    return super.onCreateOptionsMenu(menu); 
     } 

public boolean onOptionsItemSelected(MenuItem item) { 

     switch (item.getItemId()) { 
      case R.id.menuinfo: 
       Toast.makeText(getApplicationContext(),getString(R.string.verbs), Toast.LENGTH_LONG).show(); 
        break; 
      case android.R.id.home: 
       finish(); 
        break; } 
    return false; 
    } 


private ListView vlist; 
EditText ara; 
private String [] fiilliste; 
ArrayAdapter<String> adapter; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.verbs); 

     fiilliste=getResources().getStringArray(R.array.fiiller); 
     vlist=(ListView)findViewById(R.id.listView1); 
     adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, fiilliste); 
     vlist.setAdapter(adapter); 
     ara = (EditText) findViewById(R.id.editText1); 
     vlist.setTextFilterEnabled(true); 

vlist.setOnItemClickListener(new OnItemClickListener(){ 

    public void onItemClick(AdapterView<?> a,View v,int position,long id){   




    } 


}); 

ara.addTextChangedListener(new TextWatcher(){ 

     public void onTextChanged(CharSequence cs, int arg1, int arg2, int arg3) { 
      // When user changed the Text 

     verbs.this.adapter.getFilter().filter(cs); 

     } 

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



    } 

    @Override 
    public void beforeTextChanged(CharSequence arg0, int arg1, int arg2, 
      int arg3) { 
     // TODO Auto-generated method stub 

    } 
}); 

}} 

XML 파일

예를 들어
<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <string-array name="fiiller"> 
     <item>A</item> 
     <item>Affetmek</item> 
     <item>Almak</item> 
     <item>Anlamak</item> 
     <item>Anlaşmak</item> 
     <item>Anlatmak</item> 
     <item>Ayrılmak</item> 
     <item>B</item> 
     <item>Bakmak</item> 
     <item>Başlamak</item> 
    </string-array> 
</resources> 

; "Bakmak"인 listview를 클릭했을 때, listview가 걸러 졌을 때조차도, 토스트가있는 텍스트를 보여주고 싶습니다. 그리고 listview의 다른 항목을 위해, 또 다른 토스트. 나는 그것을 할 수 없었습니다. 왜냐하면 당신이 알고있는 것처럼 필터링 한 후에, 항목의 위치가 바뀌기 때문입니다.

정말 아이디어와 도움이 필요합니다. 고맙습니다! 어댑터가 필터링 된 경우에도

+0

위치가 바뀌는 문제는 무엇입니까? – pskink

+0

"Bakmak"의 일반적 위치는 8입니다. "b"를 시작하는 단어에 대해 listview를 필터링하면 위치가 8에서 2로 바뀝니다. 문제가 있습니다. – Johnny

+0

어떤 종류의 문제입니까? – pskink

답변

0

, 어댑터는이 코드를 시도해 봤어

필터링 된 목록에서 항목을 반환해야합니까?

vlist.setOnItemClickListener(new OnItemClickListener(){ 

     public void onItemClick(AdapterView<?> a,View v,int position,long id){   

      Toast.makeText(getApplicationContext(),adapter.getItem(position), Toast.LENGTH_LONG).show(); 


     } 

}); 
+0

Thank you! 이것은 나에게 내가 원하는 것을 할 수있는 아이디어를 준다! 그래서 도움이됩니다. – Johnny