【发布时间】:2014-06-10 09:15:16
【问题描述】:
是否可以将 OnItemClickListener 用于 ListView 和 OnClickListener 一起用于它们的项目?这不是必需的,但在我的情况下,将适配器(onClick)和活动(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;
}
【问题讨论】:
-
在这里发布您的代码...
-
为什么你也想要?你想做什么?
-
是的,可以同时启用两个监听器。但问题是你如何同时启用它们。这就是为什么发布一些代码。我们会知道为什么你的代码不工作
-
您可以在您的适配器中为您的视图编写一个 OnClickListener 方法。并且您还可以在 Activity 中为您的 listView 编写 onItemClickListener。我经常在我的应用程序中使用它。如果您显示您的代码,我可以帮助您。
标签: android listview onclicklistener onitemclicklistener