android - 如何让ListView Adapter中的OnClick调用Activity函数

标签 android onclick android-listview custom-adapter

我有一个带有 ListView 的 Android 应用程序,ListView 可以正常设置,但现在我希望 ListView 中的图像可以点击。我通过使用 2 个类、Activity 类(父类)和一个 ArrayAdapter 来填充列表来做到这一点。在 ArrayAdapter 中,我为列表中我希望可点击的图像实现了一个 OnClickListener。

到目前为止一切正常。

但是现在我想在运行列表中图像的 onClick 时从 Activity 类运行一个函数,但我不知道如何运行。以下是我使用的 2 个类。

首先是 Activity 类:

public class parent_class extends Activity implements OnClickListener, OnItemClickListener
{
    child_class_list myList;
    ListView myListView;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        // setup the Homelist data
        myList     = new child_class_list (this, Group_Names, Group_Dates);
        myListView = (ListView) findViewById(R.id.list);

        // set the HomeList
        myListView.setAdapter( myList );
        myListView.setOnItemClickListener(this);
    }

    void function_to_run()
    {
        // I want to run this function from the LiscView Onclick
    }

    public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) 
    {
        // do something
    }
}

还有我想从 Activity 类中调用函数的 ArrayAdapter:

public class child_class_list extends ArrayAdapter<String>
{
    // private
    private final Context context;
    private String[]        mName;
    private String[]        mDate;

    public child_class_list (Context context, String[] Name, String[] Date) 
    {
        super(context, R.layout.l_home, GroupName);
        this.context        = context;
        this.mName      = Name;
        this.mDate  = Date;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) 
    {
        LayoutInflater inflater = (LayoutInflater) context
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        View rowView = inflater.inflate(R.layout.l_home, parent, false);

        ImageView selectable_image = (ImageView) rowView.findViewById(R.id.l_selectable_image);
        selectable_image.setOnClickListener(new OnClickListener()
        {
            public void onClick(View v) 
            {
                // I want to run the function_to_run() function from the parant class here
            }
        }
        );

        // get the textID's
        TextView tvName = (TextView) rowView.findViewById(R.id.l_name);
        TextView tvDate = (TextView) rowView.findViewById(R.id.l_date);

        // set the text
        tvName.setText      (mName[position]);
        tvDate.setText  (mDate[position]);

        return rowView;
    }
}

如果有人知道如何从数组适配器运行 Activity 类中的函数或如何在 Activity 类中设置图像 onClickListener,我将非常感谢您的帮助。

最佳答案

onClick() 中做这样的事情:

((ParentClass) context).functionToRun();

关于android - 如何让ListView Adapter中的OnClick调用Activity函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10072495/

相关文章:

android - 背景图像不会因按钮 onclick 而改变

php - 提交表单和使用值 (JavaScript)

android - Listview + BaseAdapter - 如何通知单个项目的变化?

android - 努力获取相同的 ViewModel 实例

java - 如何在收到来自服务器的消息后将如此大的数据从客户端发送到服务器

javascript - 简单的 javascript onClick 用于表数据

android - 如何以编程方式检查字符串是否太宽而无法适应 Android 中的屏幕

android - 如何在 android 中的 TextView 样式中设置填充?

android - 提供的Android SDK图标可以设置颜色吗?

java - 如何清除ListView,它只是在Android App中的旧内容之后添加新内容?