2013-12-03 3 views
0

Я реализовал функцию поиска в своем приложении, но всякий раз, когда я выбираю элемент из результатов поиска, он не запускает выбранную активность. В соответствии с кодом, если я нажимаю на второй элемент, это должен сгореть деятельность,Android Search Не открываемые действия

вот мой код

package com.Example.app; 
import android.app.Activity; 
import android.content.Intent; 
import android.os.Bundle; 
import android.text.Editable; 
import android.text.TextWatcher; 
import android.view.View; 
import android.widget.AdapterView; 
import android.widget.AdapterView.OnItemClickListener; 
import android.widget.ArrayAdapter; 
import android.widget.EditText; 
import android.widget.ListView; 

public class MainActivity extends Activity { 

private ListView list1; 

private String array[] = { "Iphone", "Tutorials", "Gallery", "Android", 

"item 1", "item 2", "item3", "item 4", "item 1", "item 2", "item3", "item 4","item 1",  "item 2", "item3", "item 4"}; 

EditText inputSearch; 
ArrayAdapter<String> adapter; 
@Override 
public void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.activity_main); 
inputSearch = (EditText) findViewById(R.id.inputSearch); // initialize edittext 
list1 = (ListView) findViewById(R.id.ListView01); 
adapter =new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, array); 
list1.setAdapter(adapter); 
inputSearch.addTextChangedListener(new TextWatcher() { 

@Override 
public void onTextChanged(CharSequence cs, int arg1, int arg2, int arg3) { 
    // When user changed the Text 
MainActivity.this.adapter.getFilter().filter(cs); 
} 

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

} 

@Override 
public void afterTextChanged(Editable arg0) { 
// TODO Auto-generated method stub       
} 
}); 
list1.setOnItemClickListener(new OnItemClickListener() { 
public void onItemClick(AdapterView<?> parent, View view, 
    int position, long id) { 
if (position == 1) 
{ 
    Intent myIntent = new Intent(getApplicationContext(),Next.class); 
    startActivity(myIntent); 
} 
} 
}); 
} 
} 

ответ

0

Изменить onItemClick для

public void onItemClick(AdapterView<?> parent, View view, 
    int position, long id) { 
    Intent myIntent = new Intent(MainActivity.this,Next.class); 
    startActivity(myIntent); 
    // will launch activity every time an item in listview is clicked 
} 
}); 

У вас есть эта

if (position == 1) // only if position is 1 
{ 
Intent myIntent = new Intent(getApplicationContext(),Next.class); 
startActivity(myIntent); 
} 

Использовать контекст действия вместо getApplicationContext как MainActivity.this

Редактировать:

public void onItemClick(AdapterView<?> parent, View view, 
    int position, long id) { 
    if(position==0) 
    { 
    Intent myIntent = new Intent(MainActivity.this,Next.class); 
    startActivity(myIntent); 
    } 
    if(position==1) 
    { 
    Intent myIntent = new Intent(MainActivity.this,SecondActivityName.class); 
    startActivity(myIntent); 
    } 
    ...// similar position 2 and 3 and so on 
    } 
    }); 
+0

Что написать на месте «MainActivity»? –

+0

MainActivity не может быть разрешен как переменная –

+0

@ 96 MainActivity.this - это контекст активности. используйте вместо getApplicationContext() ' – Raghunandan

0

вы код будет работать только на этот пункт на 1-е позиции, потому что вы сделали это в вашем списке следует нажмому слушатель: -

if (position == 1) 
{ 
    Intent myIntent = new Intent(getApplicationContext(),Next.class); 
    startActivity(myIntent); 
} 

только на мыши на элементе в 1-ой позиции, это, если условие будет сбываться и активность «Next» будет называться

Смежные вопросы