无法从带有搜索选项的Listview正确启动活动

时间:2015-03-28 16:25:22

标签: android listview search android-intent android-activity

我创建了一个应用程序,该应用程序应该显示带有搜索框的列表视图以及用户可以单击并开始新活动的项目,或者搜索特定的活动并执行相同操作。

现在我可以搜索一个项目并开始它应该进行的活动,但是当我点击而不进行搜索时,它就没有正常启动。例如,单击前10个项目仅启动1个相同的活动,而不是10个不同的活动。

我的代码看起来像这样 -

public class ItemMenu extends Activity {

private ListView lv;

ArrayAdapter<String> adapter;

EditText inputSearch;


ArrayList<HashMap<String, String>> itemList;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.item_menu);

    String items[] = {"Item 1", "Item 2", "Item 3", "Item 4", "Item 5",  "Item 6", "Item 7", "Item 8", "Item 9", "Item 10", "Item 11"  etc...
    };

    lv = (ListView) findViewById(R.id.ItemListView);
    inputSearch = (EditText) findViewById(R.id.search_item);

    adapter = new ArrayAdapter<String>(this, R.layout.item_item, R.id.item_item_title, items);
    lv.setAdapter(adapter);

    lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            TextView textview = (TextView)findViewById(R.id.item_item_title);
            String sText = textview.getText().toString();
            Intent intent = null;
            if(sText.equals("Item 1"))
               intent = new Intent(getBaseContext(),
                        B1.class);
            else if(sText.equals("Item 2"))
                intent = new Intent(getBaseContext(),
                        B2.class);
            else if(sText.equals("Item 3"))
                intent = new Intent(getBaseContext(),
                        B3.class);
            else if(sText.equals("Item 4"))
                intent = new Intent(getBaseContext(),
                        B4.class);
            else if(sText.equals("Item 5"))
                intent = new Intent(getBaseContext(),
                        B5.class);
            else if(sText.equals("Item 6"))
                intent = new Intent(getBaseContext(),
                        B6.class);
            else if(sText.equals("Item 7"))
                intent = new Intent(getBaseContext(),
                        B7.class);
            else if(sText.equals("Item 8"))
                intent = new Intent(getBaseContext(),
                        B8.class);
            else if(sText.equals("Item 9"))
                intent = new Intent(getBaseContext(),
                        B9.class);
            else if(sText.equals("Item 10"))
                intent = new Intent(getBaseContext(),
                        B10.class);
            else if(sText.equals("Item 11"))
                intent = new Intent(getBaseContext(),
                        B11.class);

            etc...


            if(intent != null)
                startActivity(intent);
        }
    });

    inputSearch.addTextChangedListener(new TextWatcher() {

        @Override
        public void onTextChanged(CharSequence cs, int arg1, int arg2, int arg3) {
            ItemMenu.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
        }
    });





}

}

当我点击一个项目LogCat显示:

    W/IInputConnectionWrapper﹕ getSelectedText on inactive InputConnection
    W/IInputConnectionWrapper﹕ setComposingText on inactive InputConnection
    D/SensorManager﹕ unregisterListener:: Trklfufi 9   budiwrd5mrfo5WirfulblrwuFmfulTrklfufi$KfukwiFmfulTrklfufiRvht@,*--:af(
    D/Sensors﹕ Remain listener = Sending .. normal delay 200ms
    I/Sensors﹕ sendDelay --- 200000000
    D/SensorManager﹕ JNI - sendDelay
    I/SensorManager﹕ Set normal delay = true

1 个答案:

答案 0 :(得分:1)

我认为问题出在此行上,因为它在您的布局中找到了视图item_item_title

TextView textview = (TextView)findViewById(R.id.item_item_title);

但是您正在尝试单击查找项目的视图。所以你应该使用:

TextView textview = (TextView)view.findViewById(R.id.item_item_title);