从 onClick event/onClick 事件行为获取数据
get data from onClick event/onClick event behavior
我已经编码了一段时间,但我从未参加过任何课程,所以我对某些事情的工作原理有一些疑问。其中之一是 onClick 侦听器。我对 onClick 事件有疑问,更准确地说是 onItemClick 事件。
假设我有一个简单的 listView 并且我想处理 onItemClick 事件,我会这样:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ListView lv = (ListView)findViewById(R.id.listView);
String parameter = "123";
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
String item = parent.getItemAtPosition(position).toString();
// TODO1
}
}
// TODO2
有没有办法传递 'item' 的值,以便我可以在 'TODO2' 中使用它?
另外,如果我在 TODO1 中有一些事情要做并且需要 'parameter' 变量,有没有办法将它传递给 onItemClick 方法?
谢谢!
1) new AdapterView.OnItemClickListener 是一个匿名内部class。它可能会使用 class
周围的字段
2) 参数必须定义为 "final" 变量。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ListView lv = (ListView)findViewById(R.id.listView);
String final parameter = "123"; //<--
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
item = parent.getItemAtPosition(position).toString(); //<--
// TODO1
System.out.println(parameter)
}
}
// TODO2
private String item = null;
public String getLastClickedItem(){
return item;
}
我已经编码了一段时间,但我从未参加过任何课程,所以我对某些事情的工作原理有一些疑问。其中之一是 onClick 侦听器。我对 onClick 事件有疑问,更准确地说是 onItemClick 事件。
假设我有一个简单的 listView 并且我想处理 onItemClick 事件,我会这样:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ListView lv = (ListView)findViewById(R.id.listView);
String parameter = "123";
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
String item = parent.getItemAtPosition(position).toString();
// TODO1
}
}
// TODO2
有没有办法传递 'item' 的值,以便我可以在 'TODO2' 中使用它?
另外,如果我在 TODO1 中有一些事情要做并且需要 'parameter' 变量,有没有办法将它传递给 onItemClick 方法?
谢谢!
1) new AdapterView.OnItemClickListener 是一个匿名内部class。它可能会使用 class
周围的字段2) 参数必须定义为 "final" 变量。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ListView lv = (ListView)findViewById(R.id.listView);
String final parameter = "123"; //<--
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
item = parent.getItemAtPosition(position).toString(); //<--
// TODO1
System.out.println(parameter)
}
}
// TODO2
private String item = null;
public String getLastClickedItem(){
return item;
}