Java Android:使列表视图中的单个项目可单击
我目前有一个Java Android:使列表视图中的单个项目可单击,java,android,Java,Android,我目前有一个ListViewid=ListView,我正在用ArrayListid=myarraylist填充它。我是这样做的: final ListView listview = (ListView) findViewById(android.R.id.list); myarraylist = (ArrayList<String>) getArray(); adapter = new ArrayAdapter<String>(this, android.R.layout
ListView
id=ListView
,我正在用ArrayList
id=myarraylist
填充它。我是这样做的:
final ListView listview = (ListView) findViewById(android.R.id.list);
myarraylist = (ArrayList<String>) getArray();
adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, mylist);
myarraylist.add(...And then some other stuff I add...);
//This is the part I want to focus on
myarraylist.add("Reset High Scores");
adapter.notifyDataSetChanged();
listview.setAdapter(adapter);
我的问题是,当在列表视图中单击元素重置高分
时,我如何使某些东西
发生
编辑:这是我到目前为止得到的
listview.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
@Override
String myString = (String) parent.getAdapter().getItem(position);
if(myString.equals("Clear High Scores")) {
//Stuff
}
}
});
listview.setOnItemClickListener(新的OnItemClickListener(){
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
@凌驾
字符串myString=(字符串)parent.getAdapter().getItem(位置);
if(myString.equals(“清除高分”)){
//东西
}
}
});
列表视图
,就像按钮
一样,具有设置单击侦听器的功能,但是对于列表视图
,方法的名称是setOnItemClickListener()
。但是,它没有使用OnClickListener
,而是使用了一个名为OnItemClickListener
的类,这对于与ListView
一起使用更为有利。方法如下所示:
yourListView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent,
View view, int position, long id)
{
// some stuff
}
}
)
yourListView.setOnItemClickListener(新的OnItemClickListener(){
@凌驾
公共无效MClick(AdapterView父级、,
视图、整型位置、长id)
{
//一些东西
}
}
)
这样做的好处是,你可以检查你按下的位置所包含的内容,因此你解决问题的方法可以如下所示:
yourListView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent,
View view, int position, long id)
{
String myString = (String) parent.getAdapter().getItem(position);
if(myString.equals("Reset High Scores"))
{
// Do what you want
}
}
});
yourListView.setOnItemClickListener(新的OnItemClickListener(){
@凌驾
公共无效MClick(AdapterView父级、,
视图、整型位置、长id)
{
字符串myString=(字符串)parent.getAdapter().getItem(位置);
if(myString.equals(“重置高分”))
{
//做你想做的
}
}
});
这会让你开始。。。Andrew是对的。我想你需要的是这里:@PedroHawk我刚才在看这个,但我想这个例子是用于单击ListView上的任意位置,而不是特定的位置。然后你可以使用位置参数来验证你的
myarraylist.get(POSITION)
是否等于你想要的。酷,但是这个方法怎么知道正在单击listview
?我是否必须使用listview.onItemClick
?@user3728164您必须像设置按钮一样设置OnItemClickListener
。我编辑了我的答案以反映这一点。当我尝试此操作时,我发现错误类型ListView的方法onItemClick(new OnItemClickListener(){})未定义,OnItemClickListener无法解析为类型
,您使用了错误的方法。要设置侦听器,请使用setOnItemClickListener()
,而不是onItemClick()
.hmm。。现在它说,类型AdapterView中的方法setOnItemClickListener(AdapterView.OnItemClickListener)不适用于参数(new-OnItemClickListener(){})
yourListView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent,
View view, int position, long id)
{
String myString = (String) parent.getAdapter().getItem(position);
if(myString.equals("Reset High Scores"))
{
// Do what you want
}
}
});
/**
* Creates a new instance
*/
public void onListItemClick(ListView l, View v, int position, long id) {
// Notify the parent activity of selected item
super.onListItemClick(l, v, position, id);
//Do stuff
}