Android 微调器内的ListView:用于事件检测的适配器冲突

Android 微调器内的ListView:用于事件检测的适配器冲突,android,events,listview,spinner,Android,Events,Listview,Spinner,我在onCreate方法中嵌入了一个。我想在单击列表项时触发消息事件,但无法在ListView项上设置onClick侦听器。我没有使用任何自定义适配器。我猜spinner和listview都使用了相同类型的简单适配器,因此它会导致编译困难 我一直在关注为“lv.setOnItemClickListener(新AdapterView.OnItemClickListener”获得的错误: 类型new AdapterView.OnItemClickListener(){}必须实现 继承抽象方法 onI

我在onCreate方法中嵌入了一个。我想在单击列表项时触发消息事件,但无法在ListView项上设置onClick侦听器。我没有使用任何自定义适配器。我猜spinner和listview都使用了相同类型的简单适配器,因此它会导致编译困难

我一直在关注为“lv.setOnItemClickListener(新AdapterView.OnItemClickListener”获得的错误:

类型new AdapterView.OnItemClickListener(){}必须实现 继承抽象方法 onItemClick Listener.onItemClick(AdapterView,View,int, (长)

如何管理使用简单适配器设置listview项目上的单击事件? 我是否应该以某种方式“重命名”listview适配器,或者如何继续

伪码

// ...
import android.widget.AdapterView;
/* manually added */
import android.widget.AdapterView.OnItemClickListener;

public class MyActivity extends Activity {

onCreate(Bundle savedInstanceState){

// ... some code
        // Set Spinner listener
        mySpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {

            @Override
            public void onItemSelected(AdapterView<?> spinner, View v, int position, long id) {

// ... some code


                    lv.setOnItemClickListener(new AdapterView.OnItemClickListener()) {
                        public void onItemClick(AdapterView<?> parent, View view,int position, long id) {
                                // When clicked, show a toast with the TextView text
                                Toast.makeText(getApplicationContext(), "some msg" , Toast.LENGTH_SHORT).show();
                            }
                        });

}

}
/。。。
导入android.widget.AdapterView;
/*手动添加*/
导入android.widget.AdapterView.OnItemClickListener;
公共类MyActivity扩展了活动{
onCreate(Bundle savedInstanceState){
//…一些代码
//设置微调器侦听器
mySpinner.setOnItemSelectedListener(新的AdapterView.OnItemSelectedListener(){
@凌驾
已选择公共位置(AdapterView微调器、视图v、内部位置、长id){
//…一些代码
lv.setOnItemClickListener(新的AdapterView.OnItemClickListener()){
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
//单击后,显示带有文本视图文本的祝酒词
Toast.makeText(getApplicationContext(),“some msg”,Toast.LENGTH_SHORT.show();
}
});
}
}

因此,我在同一活动中有一个微调器和一个列表视图。根据微调器选择,我更新了一个列表视图。我还从其他事件(例如按钮事件)更新了相同的列表视图。代码原理如问题中所述

我确认这种方法非常有效,我解决了ntg与微调器/ListView交互有关的问题,但我获取数据以提供列表的方式


为了说明一点结果,我的布局看起来与微调器类似,但在微调器之外还有一些按钮,它们都驱动listview结果。

因此,我在同一活动中有一个微调器和一个列表视图。根据微调器选择,我更新了一个listview。例如,我还从按钮事件等其他事件更新了相同的listview。守则的原则如问题所述

我确认这种方法非常有效,我解决了ntg与微调器/ListView交互有关的问题,但我获取数据以提供列表的方式


为了稍微说明一下结果,我的布局看起来与微调器类似,但在微调器上增加了按钮,这两个按钮都驱动listview结果。

“我在onCreate方法中的微调器中嵌入了listview”--如果这样做有效的话,我会感到震惊。显然,它确实像一个符咒一样工作,为listview数据使用哈希列表,并要求myAdapter.notifyDataSetChanged();但我正努力在listview项目上启动Toast。微调器它本身取决于适配器,它显示的弹出窗口与
listview
没有太大区别。那么为什么要在微调器弹出窗口中嵌入列表视图呢?您需要多个适配器,而不是多个
listview
。另外,在广告中设置单击事件处理程序如果要在微调器弹出窗口中捕获视图的单个事件,请使用apter的
getView()
方法。因为根据微调器用户返回的选择,网格listview显示不同的数据。我不需要在微调器弹出窗口中捕获任何其他事件。如果您真的将listview嵌入微调器中(也就是说,在视图层次结构中,ListView是微调器的子对象)1)您误解了ListView和微调器的用途,2)我希望你真正的意思是,你的UI的一个部分有一个微调器,控制UI另一部分中ListView的内容,而不是一个是另一部分的子视图。“我有一个ListView嵌入onCreate方法中的微调器中”--如果这样做有效的话,我会感到震惊。显然,它确实像一个符咒一样工作,为listview数据使用哈希列表,并要求myAdapter.notifyDataSetChanged();但我正努力在listview项目上启动Toast。微调器它本身取决于适配器,它显示的弹出窗口与
listview
没有太大区别。那么为什么要在微调器弹出窗口中嵌入列表视图呢?您需要多个适配器,而不是多个
listview
。另外,在广告中设置单击事件处理程序如果要在微调器弹出窗口中捕获视图的单个事件,请使用apter的
getView()
方法。因为根据微调器用户返回的选择,网格listview显示不同的数据。我不需要在微调器弹出窗口中捕获任何其他事件。如果您真的将listview嵌入微调器中(也就是说,在视图层次结构中将ListView作为微调器的子对象)您1)误解了ListView和Spinner的用途,2)即使你认为它现在正在工作,也会遇到很多奇怪的错误。我希望你真正的意思是,你的UI的一部分有一个Spinner,它控制UI的另一部分中ListView的内容,而不是一个是另一部分的子视图。