Java 当我搜索任何Listview项目,然后单击所需项目时,它总是打开列表视图的第一个位置

Java 当我搜索任何Listview项目,然后单击所需项目时,它总是打开列表视图的第一个位置,java,android,listview,searchview,Java,Android,Listview,Searchview,主课 问题是,当我要从listview中搜索任何所需的项目并单击该项目时,它总是打开我在程序中添加的第一个位置项目,而不是我搜索时所需的项目 package com.example.rushikesh.first; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.text.TextUtils; import android.view.View

主课 问题是,当我要从listview中搜索任何所需的项目并单击该项目时,它总是打开我在程序中添加的第一个位置项目,而不是我搜索时所需的项目

package com.example.rushikesh.first;
import android.app.Activity; 
import android.content.Intent;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.view.Window;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.SearchView;
import com.example.rushikesh.first.R;
import com.google.android.gms.ads.AdListener;
import com.google.android.gms.ads.AdRequest;
import com.google.android.gms.ads.AdView;
import com.google.android.gms.ads.InterstitialAd;

public class Basic_programs extends Activity implements SearchView.OnQueryTextListener 
{

private SearchView mSearchView;
private ListView mListView;
private AdView mAdView;
private final String[] mStrings = Cheeses.sCheeseStrings;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
   getWindow().requestFeature(Window.FEATURE_ACTION_BAR);
    setContentView(R.layout.basic_prog_list);
    mSearchView = (SearchView) findViewById(R.id.search_view);
    mListView = (ListView) findViewById(R.id.list_view);
    mListView.setAdapter(new ArrayAdapter<String>(this,
            android.R.layout.simple_list_item_1,
            mStrings));
    mListView.setTextFilterEnabled(true);
    setupSearchView();

    mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) {

            String  itemValue    = (String) mListView.getItemAtPosition(position);
            if(position == 0) {
                Intent i = new Intent("android.intent.action.FIRST_PROG");
                startActivity(i);
            }
            if(position == 1) {
                Intent i = new Intent("android.intent.action.SECOND_PROG");
                startActivity(i);
            }
            if(position == 2) {
                Intent i = new Intent("android.intent.action.THIRD_PROG");
                startActivity(i);
            }
            if(position == 3) {
                Intent i = new Intent("android.intent.action.FOURTH_PROG");
                startActivity(i);
            }
            if(position == 4) {
                Intent i = new Intent("android.intent.action.FIFTH_PROG");
                startActivity(i);
            }
            if(position == 5) {
                Intent i = new Intent("android.intent.action.SIXTH_PROG");
                startActivity(i);
            }
            if(position == 6) {
                Intent i = new Intent("android.intent.action.SEVENTH_PROG");
                startActivity(i);
            }
            if(position == 7) {
                Intent i = new Intent("android.intent.action.EIGHT_PROG");
                startActivity(i);
            }
            if(position == 8) {
                Intent i = new Intent("android.intent.action.NINTH_PROG");
                startActivity(i);
            }
            if(position == 9) {
                Intent i = new Intent("android.intent.action.TENTH_PROG");
                startActivity(i);
            }
            if(position == 10) {
                Intent i = new Intent("android.intent.action.ELEVEN_PROG");
                startActivity(i);
            }
            if(position == 11) {
                Intent i = new Intent("android.intent.action.TWELVE_PROG");
                startActivity(i);
            }
            if(position == 12) {
                Intent i = new Intent("android.intent.action.THIRTEEN_PROG");
                startActivity(i);
            }
            if(position == 13) {
                Intent i = new Intent("android.intent.action.FOURTEEN_PROG");
                startActivity(i);
            }
            if(position == 14) {
                Intent i = new Intent("android.intent.action.FIFTEEN_PROG");
                startActivity(i);
            }
            if(position == 15) {
                Intent i = new Intent("android.intent.action.SIXTEEN_PROG");
                startActivity(i);
            }
            if(position == 16) {
                Intent i = new Intent("android.intent.action.SEVENTEEN_PROG");
                startActivity(i);
            }
            if(position == 17) {
                Intent i = new Intent("android.intent.action.EIGHTEEN_PROG");
                startActivity(i);
            }
            if(position == 18) {
                Intent i = new Intent("android.intent.action.NINETEEN_PROG");
                startActivity(i);
            }
            if(position == 19) {
                Intent i = new Intent("android.intent.action.TWENTY_PROG");
                startActivity(i);
            }
            if(position == 20) {
                Intent i = new Intent("android.intent.action.TWENTYONE_PROG");
                startActivity(i);
            }
            if(position == 21) {
                Intent i = new Intent("android.intent.action.TWENTYTWO_PROG");
                startActivity(i);
            }
            if(position == 22) {
                Intent i = new Intent("android.intent.action.TWENTYTHREE_PROG");
                startActivity(i);
            }
            if(position == 23) {
                Intent i = new Intent("android.intent.action.TWENTYFOUR_PROG");
                startActivity(i);
            }
            if(position == 24) {
                Intent i = new Intent("android.intent.action.TWENTYFIVE_PROG");
                startActivity(i);
            }
            if(position == 25) {
                Intent i = new Intent("android.intent.action.TWENTYSIX_PROG");
                startActivity(i);
            }
            if(position == 26) {
                Intent i = new Intent("android.intent.action.TWENTYSEVEN_PROG");
                startActivity(i);
            }
            if(position == 27) {
                Intent i = new Intent("android.intent.action.TWENTYEIGHT_PROG");
                startActivity(i);
            }
            if(position == 28) {
                Intent i = new Intent("android.intent.action.TWENTYNINE_PROG");
                startActivity(i);
            }
            if(position == 29) {
                Intent i = new Intent("android.intent.action.THIRTY_PROG");
                startActivity(i);
            }
            if(position == 30) {
                Intent i = new Intent("android.intent.action.THIRTYONE_PROG");
                startActivity(i);
            }
            if(position == 31) {
                Intent i = new Intent("android.intent.action.THIRTY_TWO");
                startActivity(i);
            }
            if(position == 32) {
                Intent i = new Intent("android.intent.action.THIRTY_THREE");
                startActivity(i);
            }
            if(position == 33) {
                Intent i = new Intent("android.intent.action.THIRTY_FOUR");
                startActivity(i);
            }
        }
    });

}


private void setupSearchView() {
    mSearchView.setIconifiedByDefault(false);
    mSearchView.setOnQueryTextListener(this);
    mSearchView.setSubmitButtonEnabled(true);
    mSearchView.setQueryHint("e.g. Factorial number");
}

public boolean onQueryTextChange(String newText) {
    if (TextUtils.isEmpty(newText)) {
        mListView.clearTextFilter();
    } else {
        mListView.setFilterText(newText.toString());
    }
    return true;
}

public boolean onQueryTextSubmit(String query) {
    return false;
}
}

在您的情况下,当您在搜索视图中输入文本时,它会从数组适配器中过滤出匹配项

因此,当您设置阵列适配器时,阵列的所有项都会重新定义它们的位置,而这些位置并不相同

在这里,您必须从sCheeseStrings

为此,您可以在下面的代码行中找到。如果你有任何疑问,请询问

      String itemValue = (String) mListView.getItemAtPosition(position);

      int itemPosition = 0;
            for (int i = 0; i < mStrings.length; i++) {
                if (itemValue.equalsIgnoreCase(mStrings[i])) {
                    itemPosition = i;
                }
            }

            if (itemPosition == 0) {
                String content = "android.intent.action.FIRST_PROG";
                Intent i = new Intent(content);
                startActivity(i);
            }
            if (itemPosition == 1) {
                Intent i = new Intent("android.intent.action.SECOND_PROG");
                startActivity(i);
            }
            if (itemPosition == 2) {
                Intent i = new Intent("android.intent.action.THIRD_PROG");
                startActivity(i);
            }
String itemValue=(String)mListView.getItemAtPosition(position);
int itemPosition=0;
for(int i=0;i
为什么要将单击的列表项位置(int)保存在字符串变量中?!!!!
      String itemValue = (String) mListView.getItemAtPosition(position);

      int itemPosition = 0;
            for (int i = 0; i < mStrings.length; i++) {
                if (itemValue.equalsIgnoreCase(mStrings[i])) {
                    itemPosition = i;
                }
            }

            if (itemPosition == 0) {
                String content = "android.intent.action.FIRST_PROG";
                Intent i = new Intent(content);
                startActivity(i);
            }
            if (itemPosition == 1) {
                Intent i = new Intent("android.intent.action.SECOND_PROG");
                startActivity(i);
            }
            if (itemPosition == 2) {
                Intent i = new Intent("android.intent.action.THIRD_PROG");
                startActivity(i);
            }