是否可以将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;
}
答案 0 :(得分:0)
使用此方法:
lv.setOnItemClickListener(openInfoTraveler);
而不是:
lv.setOnItemSelectedListener(openInfoTraveler);