2013-11-09 24 views
0

我從xml文件中獲取listview的值。這是我的Java和XML代碼:Android Filtered ListView

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」的單詞的列表視圖時,位置從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

謝謝!這讓我想到做我想做的事!非常有幫助。 – Johnny