Android 我可以将OnItemClickListener用于ListView吗?

Android 我可以将OnItemClickListener用于ListView吗?,android,listview,onclicklistener,onitemclicklistener,Android,Listview,Onclicklistener,Onitemclicklistener,是否可以将OnItemClickListener用于ListView和OnClickListener用于它们的项目?这不是必需的,但在我的例子中,将适配器(onClick)和活动(ontimeclick)之间的功能分离会更舒服。当我试图同时使用这些侦听器时,只有OnClickListener起作用 我所做的就是: public class ProfilePassengersListActivity extends ConnectActivity { protected ListView

是否可以将OnItemClickListener用于ListView和OnClickListener用于它们的项目?这不是必需的,但在我的例子中,将适配器(onClick)和活动(ontimeclick)之间的功能分离会更舒服。当我试图同时使用这些侦听器时,只有OnClickListener起作用

我所做的就是:

public class ProfilePassengersListActivity extends ConnectActivity
{
    protected ListView lv;
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.another_passengers_list_screen);
        anotherPassengersListView = (ListView)findViewById(R.id.anotherPassengersListListViewPassengers);
        lv.setOnItemSelectedListener(openInfoTraveler);
    }
    private android.widget.AdapterView.OnItemClickListener openInfoTraveler = new OnItemClickListener() 
    {
          public void onItemClick(AdapterView<?> parent, View view,
              int position, long id) 
          {
              Log.i(LOGTAG, "in onclick");
          }
    };
}
公共类概要文件PassengerListActivity扩展了ConnectActivity
{
受保护的ListView lv;
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(右布局,另一个乘客列表屏幕);
AnotherPassengerListView=(ListView)findViewById(R.id.AnotherPassengerListView乘客);
lv.setOnItemSelectedListener(openInfoTraveler);
}
私有android.widget.AdapterView.OnItemClickListener openInfoTraveler=new OnItemClickListener()
{
public void onItemClick(AdapterView父级、视图、,
内部位置,长id)
{
Log.i(LOGTAG,“在onclick中”);
}
};
}
在适配器处:

public class ProfilePassengersListAdapter extends ArrayAdapter<String> {
...
@Override
    public View getView(final int position, View convertView, final ViewGroup parent){
        convertView = super.getView(position, convertView, parent);
        final String currObj = list.get(position);
        if(convertView.findViewById(R.id.item_delete_confirmation) == null)
        {
            RelativeLayout container = new RelativeLayout(ctx);
            LayoutInflater inflater = (LayoutInflater) ctx.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            View child = inflater.inflate(R.layout.item_delete_confirmation, null);
            convertView.setTag("main");
            container.setLayoutParams(new AbsListView.LayoutParams(AbsListView.LayoutParams.MATCH_PARENT, convertView.getHeight()));
            container.addView(convertView);
            container.addView(child);
            convertView = container;
        }
        if(!preparedToDelete.contains(list.get(position)))
        {
            convertView.findViewWithTag("main").setVisibility(View.VISIBLE);
            convertView.findViewById(R.id.item_delete_confirmation).setVisibility(View.INVISIBLE);
        }
        else
        {
            convertView.findViewWithTag("main").setVisibility(View.GONE);
            convertView.findViewById(R.id.item_delete_confirmation).setVisibility(View.VISIBLE);
            //Log.i("wtf", "prepared to delete: " + currObj);
        }
        final View itemView = convertView;
        /*convertView.setFocusable(false);
        convertView.setFocusableInTouchMode(false);
        convertView.setClickable(true);*/
        convertView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                Log.i(LOGTAG, "onClick");
            }
        });
        return convertView;
}
公共类配置文件PassengerListAdapter扩展了ArrayAdapter{
...
@凌驾
公共视图getView(最终整型位置、视图转换视图、最终视图组父视图){
convertView=super.getView(位置、convertView、父级);
最终字符串currObj=list.get(位置);
if(convertView.findViewById(R.id.item\u delete\u confirmation)==null)
{
RelativeLayout容器=新的RelativeLayout(ctx);
LayoutInflater充气器=(LayoutInflater)ctx.getSystemService(Context.LAYOUT\u充气器\u服务);
查看子项=充气机。充气(R.layout.item\u delete\u confirmation,null);
convertView.setTag(“main”);
container.setLayoutParams(新的AbsListView.LayoutParams(AbsListView.LayoutParams.MATCH_父级,convertView.getHeight());
container.addView(convertView);
container.addView(子级);
convertView=容器;
}
如果(!preparedToDelete.contains(list.get(position)))
{
convertView.findViewWithTag(“main”).setVisibility(View.VISIBLE);
convertView.findViewById(R.id.item\u delete\u confirmation).setVisibility(View.INVISIBLE);
}
其他的
{
convertView.findViewWithTag(“main”).setVisibility(View.GONE);
convertView.findViewById(R.id.item\u delete\u confirmation).setVisibility(View.VISIBLE);
//日志i(“wtf”,“准备删除:”+currObj);
}
最终视图项目视图=转换视图;
/*convertView.setFocusable(false);
convertView.setFocusableInTouchMode(false);
convertView.setClickable(真)*/
convertView.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
//TODO自动生成的方法存根
Log.i(LOGTAG,“onClick”);
}
});
返回视图;
}
使用此方法:

lv.setOnItemClickListener(openInfoTraveler);

与此相反:


lv.setOnItemSelectedListener(openInfoTraveler)

在这里发布您的代码…为什么您也要这样做?您想做什么?是的,可以同时启用这两个侦听器。但问题是如何同时启用这两个侦听器。这就是为什么要发布一些代码。我们将了解您的代码不起作用的原因。您可以在适配器中为视图编写OnClickListener方法。您还可以在活动中为您的listView创建setOnItemClickListener。我经常在我的应用程序中使用它。如果您显示您的代码,我可以帮助您。哦,对不起。我当然使用setOnItemClickListener metod。这是实验中的一行