java - 如何更正setOnItemClickListener?

标签 java android listview listactivity onclicklistener

我将 setOnItemClickListener 添加到此代码中并具有搜索过滤器,当我单击列表项而不是打开新 Activity 时,我会强制关闭! 一切工作正常,但无法打开列表项 Activity ! 我的代码哪里错了?

我的代码:

public class MainActivity extends Activity {

// List view
private ListView lv;

// Listview Adapter
ArrayAdapter<String> adapter;

// Search EditText
EditText inputSearch;


// ArrayList for Listview
ArrayList<HashMap<String, String>> productList;

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

      // Listview Data
      String products[] = {"Dell Inspiron", "HTC One X", "HTC Wildfire S", "HTC Sense", "HTC Sensation XE","iPhone 4S", "Samsung Galaxy Note 800","Samsung Galaxy S3", "MacBook Air", "Mac Mini", "MacBook Pro"};



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

     // Adding items to listview
    adapter = new ArrayAdapter<String>(this, R.layout.list_item, R.id.product_name, products);


     lv.setAdapter(adapter);

 //-----------------------------------------------------------------------------------

    // listening to single list item on click
    lv.setOnItemClickListener(new OnItemClickListener() {
      public void onItemClick(AdapterView<?> parent, View view,
          int position, long id) {

          // selected item 
          String product = ((TextView) view).getText().toString();

          // Launching new Activity on selecting single List Item
          Intent i = new Intent(getApplicationContext(), SingleListItem.class);
          // sending data to new activity
          i.putExtra("product", product);
          startActivity(i);

      }
    });
 //-----------------------------------------------------------------------------------------        
    /**
     * Enabling Search Filter
     * */
    inputSearch.addTextChangedListener(new TextWatcher() {

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

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

        }

        public void afterTextChanged(Editable arg0) {
            // TODO Auto-generated method stub                          
        }
    });
    }

 }

最佳答案

没有日志很难说,但有两件事是可能的: 1)你的 View 不是 TextView,所以你得到 ClassCastException 2) Activity SingleListItem 未在 list 中声明

关于java - 如何更正setOnItemClickListener?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12434970/

相关文章:

java - 从 Java 中的格式化字符串中解析日期

java - EditText OnClickListener 需要两次点击才能工作

java - JSON 子数组搜索

javascript - 如何防止机器人程序和垃圾 API 请求?

android - 如何根据位置从适配器获取 View 并在android中将选择设置为true?

java - 锚定 Pane 中元素的顺序

java - 异常 java.lang.IllegalArgumentException : object is not an instance of declaring class at sun. reflect.NativeMethodAccessorImpl.invoke0

java - 动态设置Fragment时出错

java - 获取android中当前正在运行的任务的应用程序图标

android - 在 ListView 之间添加布局