gpt4 book ai didi

android - 将 onclick 方法放在适配器之外更好还是没有什么区别

转载 作者:行者123 更新时间:2023-11-29 00:29:06 25 4
gpt4 key购买 nike

现在我有一个带有自定义适配器的 ListView ,该适配器扩展了 ArrayAdapter。我在 getView() 中的 click 方法中有列表项,但我不禁想知道将它放在 Activity 类中是否更好,如下面的 myList.setOnClickListener()

它对性能有影响吗?

最佳答案

最好将其放在列表中,而不是放在单个 View 中。可能会为每个 View 多次调用 getView 方法(通常是这样),然后您会为列表的每个 View 多次调用方法 setOnClickListener(无用)。

当然最好只在列表中调用一次,然后识别每次点击的 View 。

下面是一个小例子。

您在 ListView(或通用 ViewGroup)上设置监听器:

// this one may be called just once
myListView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, final int position, long arg3) {
// you have the position of the clicked item, then you know what item has been clicked and you can do some stuff related to that one
}
});

您在 ViewGroup 的每个项目上设置监听器:

// in the adapter class you have the getView method
@Override
public View getView(int position, View arg1, ViewGroup arg2) {
LinearLayout myLayout = (LinearLayout) mContext.getLayoutInflater().inflate(R.layout.something, null);
//this one is called AT LEAST ONCE on each element of the list...
myLayout.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// Do something
}
});
return myLayout;
}

你可以看出区别!如果您不必为 ViewGroud 的每个 View (ListView、GridView 等)专门化应用程序的行为,那么第一种选择肯定更好!

请记住,在创建界面时,通常会为每个元素多次调用 getView 方法。如果你做的操作更少,那么性能会更高……此外,第一个解决方案对我来说更清晰。

关于android - 将 onclick 方法放在适配器之外更好还是没有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17172576/

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