我可以使用OnItemClickListener for ListView和OnClickListener作为项吗?

时间:2014-06-10 09:15:17

标签: android listview onclicklistener onitemclicklistener

是否可以将ListI和OnClickListener的OnItemClickListener用于它们的项目?这不是必要的,但在我的情况下,在Adapter(onClick)和Activity(onItemClick)之间分离功能更加舒适。当我尝试一起使用这些监听器时,只有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");
          }
    };
}

在适配器:

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;
}

1 个答案:

答案 0 :(得分:0)

使用此方法:

lv.setOnItemClickListener(openInfoTraveler);

而不是:

lv.setOnItemSelectedListener(openInfoTraveler);