Android 自定义ListView setOnItemClickListener
我有一个Android 自定义ListView setOnItemClickListener,android,listview,Android,Listview,我有一个列表视图,显示时没有扩展列表活动。我想启用setOnItemClickListener。这是我在onCreate adapter = new CustomAdapter(this, MyDB); setListAdapter(adapter); mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() { public void onItemCli
列表视图
,显示时没有扩展列表活动
。我想启用setOnItemClickListener
。这是我在onCreate
adapter = new CustomAdapter(this, MyDB);
setListAdapter(adapter);
mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
Toast.makeText(getBaseContext(), "test", Toast.LENGTH_LONG).show();
}
但是,
setOnItemClickListener
不工作 也许您在xml布局中设置了onClickListener-删除此选项
您可以为每个列表项视图指定
onClickListener
,而无需ListView。setonimclicklister
如果您在内部使用可单击按钮,我认为最好的方法不是使用AdapterView.onimclicklistener
,而是使用通常的onClick
事件。
或者使用android:genderantfocusability=“blocksDescendants”我希望您的案例。您可以在适配器上设置OnClickListener,如下所示-
public class DeviceList_Adapter extends BaseAdapter implements View.OnClickListener
{
/************* CustomAdapter Constructor *****************/
public DeviceList_Adapter(Activity a, ArrayList d)
{
/********** Take passed values **********/
activity = a;
data=d;
/*********** Layout inflator to call external xml layout () ***********/
inflater = (LayoutInflater)activity.
getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
public int getCount() {
if(data.size()<=0)
return 1;
return data.size();
}
public Object getItem(int position) {
return position;
}
public long getItemId(int position) {
return position;
}
public View getView(int position, View convertView, ViewGroup parent)
{
View vi = convertView;
ViewHolder holder;
if(convertView==null){
/****** Inflate listitem_device.xml file for each row ( Defined below ) *******/
vi = inflater.inflate(R.layout.listitem_device, null);
/******** Set Item Click Listner for LayoutInflater for each row *******/
vi.setOnClickListener(new OnItemClickListener(position));
}
return vi;
}
@Override
public void onClick(View v) {
Log.v("CustomAdapter", "=====Row button clicked=====");
}
/********* Called when Item click in ListView ************/
private class OnItemClickListener implements View.OnClickListener {
private int mPosition;
OnItemClickListener(int position){
mPosition = position;
}
@Override
public void onClick(View arg0)
{
MainActivity mainActivity = (MainActivity)activity;
/**** Call onItemClick Method inside CustomListViewAndroidExample Class ( See Below )****/
mainActivity.onItemClick(mPosition);
}
}
}
公共类DeviceList\u适配器扩展BaseAdapter实现View.OnClickListener
{
/*************自定义适配器构造函数*****************/
公用设备列表适配器(活动a、阵列列表d)
{
/**********接受传递的值**********/
活动=a;
数据=d;
/***********布局充气器调用外部xml布局()***********/
充气器=(充气器)活动。
getSystemService(上下文布局\充气机\服务);
}
public int getCount(){
如果(data.size()你有什么错误吗?你的listView是如何创建的?里面有按钮之类的视图吗?没有错误,我就是拿不到吐司。试试`android:DegenantFocusability=“blocksDescendants”`Opiatefuchs,是的,里面有按钮
public class DeviceList_Adapter extends BaseAdapter implements View.OnClickListener
{
/************* CustomAdapter Constructor *****************/
public DeviceList_Adapter(Activity a, ArrayList d)
{
/********** Take passed values **********/
activity = a;
data=d;
/*********** Layout inflator to call external xml layout () ***********/
inflater = (LayoutInflater)activity.
getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
public int getCount() {
if(data.size()<=0)
return 1;
return data.size();
}
public Object getItem(int position) {
return position;
}
public long getItemId(int position) {
return position;
}
public View getView(int position, View convertView, ViewGroup parent)
{
View vi = convertView;
ViewHolder holder;
if(convertView==null){
/****** Inflate listitem_device.xml file for each row ( Defined below ) *******/
vi = inflater.inflate(R.layout.listitem_device, null);
/******** Set Item Click Listner for LayoutInflater for each row *******/
vi.setOnClickListener(new OnItemClickListener(position));
}
return vi;
}
@Override
public void onClick(View v) {
Log.v("CustomAdapter", "=====Row button clicked=====");
}
/********* Called when Item click in ListView ************/
private class OnItemClickListener implements View.OnClickListener {
private int mPosition;
OnItemClickListener(int position){
mPosition = position;
}
@Override
public void onClick(View arg0)
{
MainActivity mainActivity = (MainActivity)activity;
/**** Call onItemClick Method inside CustomListViewAndroidExample Class ( See Below )****/
mainActivity.onItemClick(mPosition);
}
}
}