如何使用此搜索过滤 ListView 使用 OnListItemClickListener

Posted

技术标签:

【中文标题】如何使用此搜索过滤 ListView 使用 OnListItemClickListener【英文标题】:How can I use OnListItemClickListener using this Search Filtering ListView 【发布时间】:2014-07-29 06:41:35 【问题描述】:

我在列表视图中使用 setOnItemClickListener 时遇到问题。每次我尝试时,它都会导致太多错误,导致代码比我打算做的更糟糕。

这是我的代码:

public class Search 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_search);

// Listview Data
final String products[] = "Fill in the Blocks", "The Music Bee", "Little Paragon",
"Subway Surfers", "Cytus", "Temple Run", "Clumsy Ninja", "Smash Hit";

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

/**
* Enabling Search Filter
* */
inputSearch.addTextChangedListener(new TextWatcher() 

@Override
public void onTextChanged(CharSequence cs, int arg1, int arg2, int arg3) 
// When user changed the Text
Search.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                          
            
);    
       

我想让 listview 数据中的字符串可点击以供我的其他活动使用,但它不起作用。我试过这段代码:

 lv.setOnItemClickListener(new OnItemClickListener() 
 public void onItemClick(AdapterView<?> parent, View view, int position, long id) 

 String openClass = adapter.getItem[position];
 if (openClass.equals("Fill in the Blocks")) 
   Intent myIntent = new Intent(view.getContext(), Fill_in_the_Blocks.class);
   startActivityForResult(myIntent, 0);
   
 else if (openClass.equals("The Music Bee")) 
   Intent myIntent1 = new Intent(view.getContext(), The_Music_Bee.class);
   startActivityForResult(myIntent1, 0);
   
 else if (openClass.equals("Little Paragon")) 
   Intent myIntent2 = new Intent(view.getContext(), Little_Paragon.class);
   startActivityForResult(myIntent2, 0);
   
   

错误如下: - 在 lv.setOnItemClickListener 中,“AdapterView 类型中的方法 setOnItemClickListener(AdapterView.OnItemClickListener) 不适用于参数 (new OnItemClickListener())” -在(new OnItemClickListener()中,“OnItemClickListener无法解析为一个类型” - 在 public void onItemClick(AdapterView, "AdapterView 无法解析为类型" - 在 String openClass = adapter.getItem[position];, "getItem 无法解析或者不是字段"

【问题讨论】:

你试过Debugging你的代码吗? 我做到了。这些是我这样做后遇到的错误。提供的修复没有帮助,所以......是的。无论如何,它已经回答了。谢谢。 很高兴你能成功 :) 【参考方案1】: 在lv.setOnItemClickListener中,“AdapterView类型中的方法setOnItemClickListener(AdapterView.OnItemClickListener)不适用于参数(new OnItemClickListener())” 在(new OnItemClickListener()中,“OnItemClickListener无法解析为一个类型” 在 public void onItemClick(AdapterView, "AdapterView 无法解析为类型"

通过将新的 OnItemClickListener() 替换为

,前 3 个错误应该会消失
new AdapterView.OnItemClickListener()

并确保您导入:

import android.widget.AdapterView;

最后的错误:

String openClass = adapter.getItem[position];中,“getItem无法解析或不是字段”

您应该调用 getItem 方法,而不是使用数组索引。

换行:

String openClass = adapter.getItem[position];

String openClass = adapter.getItem(position);

【讨论】:

成功了!谢谢你,兄弟。对此,我真的非常感激。这是我过去两周一直在工作的学校项目,但我没有去任何地方。太棒了!

以上是关于如何使用此搜索过滤 ListView 使用 OnListItemClickListener的主要内容,如果未能解决你的问题,请参考以下文章

jQuery Mobile:Listview 过滤器搜索回调函数

如何在Flutter(2021)中创建过滤器搜索列表视图

使用 EditText 在 ListView 中搜索

如何将 lodash 对象(过滤器对象)动态转换为 jquery listview

如何在android中的简单列表视图上使用startsWith应用搜索过滤器

使用 Baseadapter 过滤 ListView 过滤文本而不是图像