gpt4 book ai didi

android - 关于ListView代码

转载 作者:行者123 更新时间:2023-11-29 02:13:13 24 4
gpt4 key购买 nike

我是 android 的新手,现在我正在学习 ListView

当我看到这段代码时,我正在阅读来自 bogotobogo.com 的教程:

ListView lv = getListView();
lv.setTextFilterEnabled(true);
*** lv.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView parent, View v,
int position, long id) {
// When clicked, show a toast with the TextView text
Toast.makeText(getApplicationContext(), ((TextView) v).getText(),
Toast.LENGTH_SHORT).show();
}
}); ***

我无法理解 lv.setOnItemClickListener(new OnItemClickListener() 中的代码;它是一个参数吗?

谁能帮我理解一下?

最佳答案

该代码所做的是实现一个新的内联 OnItemClickListener。 OnItemClickListener 接口(interface)基本上是一个约定,表示对象将提供函数 onItemClick(....) 的实现。稍后,当单击列表中的项目时,将调用 onItemClick 函数和 AdapterView(实例化和管理列表行的东西, View - (特定行的渲染代码),位置(位置列表)和一个我从未使用过的 id 属性,因此您可以查看传入的内容。

像这样的内联代码对我来说总是很奇怪。我认为还有其他几种写法更直观。请记住,您正在做的是编写一些代码,以便在您的列表中的一行被点击时执行。

1 - 你可以让你的 Activity 实现 OnItemClickListener

public class SomeActivity extends Activity implements OnItemClickListener{
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.yourview);

ListView lv = (ListView)findViewById(R.id.listView);
lv.setOnItemClickListener(this);
}

@Override
public void onItemClick(AdapterView<?> arg0, View view, int position, long id) {
//Your toast code goes in here
}
}

在此代码中,您让主类实现 OnItemClickListener 接口(interface),因此 setOnItemClickListener 将主类 (this) 视为 OnItemClickListener 的一个实例。单击列表中的一行时,将调用 onItemClick 函数。

您还可以 2 - 让您的点击监听器来自内部类。

public class SomeActivity extends Activity implements OnItemClickListener{
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.yourview);

ListView lv = (ListView)findViewById(R.id.listView);
lv.setOnItemClickListener(new YourInternalClass());
}


class YourInternalClass implements View.OnItemClickListener{
@Override
public void onItemClick(AdapterView<?> arg0, View view, int position, long id) {
//Your toast code goes in here
}
}
}

实际上这三种方法都在做同样的事情:为 setOnItemClickListener 提供一个 View.OnItemClickListener 类的实例,当列表中的一行被点击时,它会调用 onItemClick 函数。

关于android - 关于ListView代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6026264/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com