2017-10-22 104 views
0

任何人都可以幫助我如何修復listview的searchview錯誤的結果。例如我有列表視圖(1,2,3,4,5)的數據當我從searchview搜索數據2時,我點擊它,總是顯示數據1,當我沒有從searchview搜索數據時,結果如果爲真,我點擊數據1只顯示1,圖2示出2搜索ListView與onClick視圖顯示錯誤的結果

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    listView = (ListView) findViewById(R.id.listview); 

    final String[] values= new String[]{"button1","button2","buttton3"}; 
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, 
      android.R.layout.activity_list_item,android.R.id.text1,values); 
    listView.setAdapter(adapter); 
    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 

     @Override 
     public void onItemClick(AdapterView<?> adapterView, View view, 
           int position, long id) { 
      if(position==0){ 
       Intent myintent = new Intent(view.getContext(),Main2Activity.class); 
       startActivityForResult(myintent,0); 
      } 
      if(position==1){ 
       Intent myintent = new Intent(view.getContext(),Main3Activity.class); 
       startActivityForResult(myintent,1); 
      } 
      if(position==2){ 
       Intent myintent = new Intent(view.getContext(),Main2Activity.class); 
       startActivityForResult(myintent,2); 
      } 
     } 
    }); 

回答

0

用於startActivityForResult第二個參數是旨在標識發送給所述發起活動結果的代碼。將價值傳遞給另一項活動的理想方式是通過意向額外費用(即作爲意向的一部分發送的額外信息)。因此,而不是startActivityForResult(intent,value_to_be_used)你應該使用的線沿線的東西: -

Intent myintent = new Intent(view.getContext(),Main2Activity.class); 
    myintent.putExtra("MYKEYFORTHEVALUE",position) 
    startActivityForResult(myintent,111); 

這將爲所有三個工作。

Main2Activity你不得不像下面這樣檢索值: -

int myvaluefromtheotheractivity = getIntent.getIntExtra("MYKEYFORTHEVALUE",-1); 
if (mymyvaluefromtheotheractivity < 0) { 
    // handle value not being obtained for some reason 
} 
  • MYKEYFORTHEVALUE是用來識別您可以添加多個值的特定值的字符串。
  • 第二個參數(取決於類型)是默認值,所以-1不應該是一個位置,因此您可以檢測到沒有任何內容正在發送。
+0

謝謝!我會盡力實施它 – Sebastian