当前位置: 首页 > 面试题库 >

从不调用BaseAdapter OnItemClickListener

宋丰
2023-03-14
问题内容

我有一个自定义BaseAdapterListView在我农具AdapterView.OnItemClickListener

问题是该onItemClick(AdapterView<?>, View, int, long)方法从未调用过。我想我需要interface在我的主适配器Activity而不是ListView自定义适配器中实现它。

MyListViewAdapter.java

public class MyListViewAdapter extends BaseAdapter implements AdapterView.OnItemClickListener
{
    private Context context;
    private ArrayList<MyListViewRow> rowsList = new ArrayList<MyListViewRow>(); // All one row items

    private TextView a;


    public MyListViewAdapter(Context context,ArrayList<MyListViewRow> rowsList)
    {
        this.context = context;
        this.rowsList = rowsList;
    }

    @Override
    public int getCount()
    {
        return this.rowsList.size();
    }

    @Override
    public Object getItem(int position)
    {
        return this.rowsList.get(position);
    }

    @Override
    public long getItemId(int position)
    {
        return position;
    }

    /**
     * Returns a new row to display in the list view.
     *
     * Position - position of the current row.
     *
     */
    @Override
    public View getView(int position, View convertView, ViewGroup parent)
    {
        LayoutInflater layoutInflater = (LayoutInflater) this.context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        /**
         * Inflating the root view and all his children and set them to a View Object.
         *
         */
        View row = layoutInflater.inflate(R.layout.list_view_row,null);

        // Get all the views in my row
        this.a = (TextView) row.findViewById(R.id.a_id;


        MyListViewRow myListViewRow = rowsList.get(position);

        // Set values to all the views in my row
        this.a.setText(myListViewRow.getA());



        return row;
    }


    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id)
    {
        Toast.makeText(context, "onItemClick LV Adapter called", Toast.LENGTH_LONG).show();

    }


} // End of MyListViewAdapter class

我对吗?


问题答案:

为什么在适配器内部会有OnItemClickListener?您可能在Adapter内有OnClickListener,或者最佳实践是将OnItemClickListener设置为ListView或您在活动/片段中使用的任何AdapterView。您目前的操作方式因以下几个原因而无法使用:

  1. 您没有将侦听器设置为视图。
  2. 不能 将OnItemClickListener设置为TextView。
  3. 在适配器类内部将onClickListener设置为TextView,意味着您将必须单击TextView本身,否则, 将不会 调用侦听器。


 类似资料:
  • 我有一个问题 特征通知,我关注Android的文档并在许多堆栈溢出帖子中搜索。我所有的代码都有效,直到我尝试从我的设备获取数据,当我订阅通知时,我得到这个日志: 蓝牙Gatt:setCharacterticNotification() 但我的方法从未被调用 我的UUID很好,我的服务发送的数据我已经用其他应用程序检查过了。我为我的应用程序启用位置。 我在清单中拥有此权限: uses-permiss

  • 问题内容: 我有一个自定义适配器,可显示订单列表中的每一行。 从Web服务查询新的订单列表之后,我想更新ListView的内容,因此我让Activity在调用notifyDataSetChanged()之前进行更新。 但是,从不调用OrderRowAdapter的getView()方法。ListView永远不会更新。 问题答案: 原来我不被叫的问题是因为它不可见。我的布局XML已经上与它的高度。因

  • 我创建了一个节点lambda函数,它对Aurora数据库进行简单调用。当我在控制台中测试该函数时,查询返回,我可以在日志中看到结果,但回调似乎永远不会被调用,所以我的lambda函数超时了。我无法找出问题所在。希望这里有人能指出我的问题。 生成的Cloudwatch日志如下所示。。。

  • 嗨,我在主片段内使用带有碎片网的viewPager。我试图从画廊或相机中获取图像到位图,但在选择照片并启动ActivityForResult后,它不会在onActivityResult中捕获... 以下是我如何调用startActivityForResult: 这是我的onActivityResult: 有什么想法吗?

  • 我试图在用户轻击或长按时在映射中的某个地方放一个标记,我在方法中放一个toast并登录以了解发生了什么,我注意到这些方法从未被调用,我做错了什么?我正在使用最新的osmdroid和osmbonuspack版本,并且运行良好,下面是我的代码:

  • 当我在AWS平衡器下部署我的应用程序时,应用程序会从myDir/myAppName调用一些资源。但是样式资源是从根调用的,比如myDir/。 例如myDir/myAppName/index.html可用于loadBalancer.但是myDir/myStilesheet.css不可访问。 如何在myDir/myAppName下设置这些资源(css等)? 提前谢谢!