2012-08-01 39 views
0

我有一个listview与相应的活动,当我点击每个项目时开始。它工作正常。但是当我搜索“Pedro”并点击它时,请不要开始正确的活动。它打开第一个活动“Joao.class”Listview搜索没有返回正确的相应的活动(TextWatcher)

这是我的代码。请,我需要一个详细的解释。我不太了解Java,所以有人可以向我解释或告诉我应该在哪里更改代码?

非常感谢!

public class Main extends Activity { 

    private ListView lv1; 
private EditText ed; 
private String lv_arr[]= {"Android","Cupcake","Donut","Eclairs","AndroidPeople","Froyo",}; 
private ArrayList<String> arr_sort= new ArrayList<String>(); 
int textlength=0; 
@Override 
public void onCreate(Bundle icicle) 
{ 
super.onCreate(icicle); 
setContentView(R.layout.main); 
lv1=(ListView)findViewById(R.id.ListView01); 
ed=(EditText)findViewById(R.id.EditText01); 
lv1.setOnItemClickListener(new OnItemClickListener(){ 

public void onItemClick(AdapterView<?> arg0, View arg1, int position, 
long arg3) { 



     if ("João".equals(lv_arr[position])) { 
      Intent myIntent = new Intent(Main.this, Joao.class); 
      startActivity(myIntent); 
     } 

     if ("Maria".equals(lv_arr[position])) { 
      Intent myIntent = new Intent(Main.this, Maria.class); 
      startActivity(myIntent); 
     } 

     if ("Pedro".equals(lv_arr[position])) { 
      Intent myIntent = new Intent(Main.this, Pedro.class); 
      startActivity(myIntent); 
     } 


} 

     }); 





// By using setAdpater method in listview we an add string array in list. 
lv1.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1 , lv_arr)); 
ed.addTextChangedListener(new TextWatcher() { 

public void afterTextChanged(Editable s) { 
} 

public void beforeTextChanged(CharSequence s, int start, int count, 
int after) { 
} 

public void onTextChanged(CharSequence s, int start, int before, 
int count) { 

textlength=ed.getText().length(); 
arr_sort.clear(); 
for(int i=0;i<lv_arr.length;i++) 
{ 
if(textlength<=lv_arr[i].length()) 
{ 
if(ed.getText().toString().equalsIgnoreCase((String) lv_arr[i].subSequence(0, textlength))) 
{ 
arr_sort.add(lv_arr[i]); 
} 
} 
} 

lv1.setAdapter(new ArrayAdapter<String>(Main.this,android.R.layout.simple_list_item_1 , arr_sort)); 

} 
}); 
} 

} 

回答

0

我的猜测是,在android.R.layout.simple_list_item_1数据不中的数据阵列中后进行排序相匹配。而不是查看数组,您将需要从arr_sort获取值。即:

if ("Pedro".equals(arr_sort.get(position))) {

+0

所以,彼得,当我搜索佩德罗现在的作品。但是,listview lv_arr不再工作。当我点击一个特定的项目时,该应用程序正在播放并关闭。/ – user1550421 2012-08-01 02:07:25

+0

您需要提供更多更具体的信息,以便为我提供任何有用的信息。即:你更新的onItemClick函数是什么。在应用程序崩溃时输出的logcat输出(来自eclipse调试器)是什么。 (您也可以从名为catlog的playstore下载一个程序,以便在手机上查看这些日志) – 2012-08-01 07:17:23