【问题标题】:When I searching any Listview item and then going to click desire item, it always open first position of List View当我搜索任何 Listview 项目然后单击所需项目时,它总是打开 List View 的第一个位置
【发布时间】:2017-02-25 05:39:24
【问题描述】:

MainActivity.class 问题是当我要从列表视图中搜索任何所需的项目并单击它时,它总是打开第一个位置项目,我在搜索时添加到程序中不需要的项目。

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;
}
}

Cheeses.class 活动

package com.example.rushikesh.first;

public class Cheeses {

public static final String[] sCheeseStrings = {
        "Hello World!", "Addition of two numbers", "Add two numbers in range of integers(4 bytes)", "Factorial number taking user input", "calculating factorial of large numbers",
        "Odd or Even number", "Odd or Even number (Second method)", "Reverse number", "Get input from user in Java",
        "If else program in Java", "Nested If Else program",
        "Print multiplication table", "For loop program in Java", "For loop program to print Stars Pattern",
        "For loop program to print an Alphabets",
        "While loop program to print an Alphabet", "Do-while program to print an Alphabet", "Convert Fahrenheit to Celsius",
        "Swap two numbers using third variable", "Swap two numbers without using third variable",
        "Reverse a string", "Reverse a string using String Buffer class", "Java program to get Ip address",
        "Print prime numbers", "Check palindrome number",
        "Factorial number", "Factorial number using Recursion", "Fibonacci Series in Java without using recursion",
        "Fibonacci Series in Java using recursion", "Search a word inside a string", "Convert integer into hex",
        "Java For loop Thread Sleep method Example", "Thread example by Extending Thread Class",
        "Thread example by Implementing Runnable Interface"

};



}

【问题讨论】:

  • 为什么把点击的列表项位置,也就是int,保存在String变量中?!!!!

标签: java android listview searchview


【解决方案1】:

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

所以数组的所有项都重新定义了它们的位置,当你设置数组适配器时,它们的位置是不同的。

这里,你必须从 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);
            }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-06
    • 2020-05-06
    • 2017-01-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多