【问题标题】:Android Calling Custom Adapter Methods within MainActivityAndroid 在 MainActivity 中调用自定义适配器方法
【发布时间】:2018-09-11 19:38:49
【问题描述】:

以下代码存在于我的主要活动中。我想知道它们是否是我可以使用传递给 gridview.setAdapter() 函数的 GridAdapter 实例调用方法的一种方式。

GridAdapter 负责用图像填充网格视图。单击时,我想获取它被单击的位置以及来自 GridAdapter 的一些数据。

    // create a new GridView object
    GridView gridview = this.findViewById(R.id.gridView);
    gridview.setAdapter(new GridAdapter(this));
    gridview.setOnItemClickListener(new AdapterView.OnItemClickListener()
    {
        @Override
        public void onItemClick(AdapterView<?> parent, View v,
                                int position, long id)
        {
            thisGridAdapter.someMethod(position);  //what I want to do
            Log.d("gridView", String.valueOf(position));
            TextView tv = findViewById(R.id.textView);
            tv.setText(String.valueOf(position));
        }
    });

【问题讨论】:

    标签: java android


    【解决方案1】:

    将其分配给变量?

    final GridAdapter adapter = new GridAdapter(this);
    GridView gridView = findViewById(R.id.gridView);
    gridView.setAdapter(adapter);
    gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
            adapter.someMethod(position);
        }
    });
    

    或者,使用GridView#getAdapter() 方法并将其转换为您的适配器类:

    final GridView gridView = findViewById(R.id.gridView);
    gridView.setAdapter(new GridAdapter(this));
    gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
            ((GridAdapter) gridView.getAdapter).someMethod(position);
        }
    });
    

    【讨论】:

    • 啊,我什至没有想到这一点。谢谢!
    猜你喜欢
    • 2018-08-22
    • 1970-01-01
    • 2013-04-26
    相关资源
    最近更新 更多