如何使用此搜索过滤 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 过滤器搜索回调函数
如何将 lodash 对象(过滤器对象)动态转换为 jquery listview