如何在CustomAdapter类中调用新的意图?

我对 Android Studios 相当陌生,并且在从 CustomAdapter 类调用新活动时遇到问题。在应用程序中,用户应该单击 ListView 中的文本并打开一个显示联系人各自详细信息的新活动。


我有一个名为openContactDetails的方法,位于MainActivity.java中,它接受参数Context context、String currName、String currNumber。我在CustomAdapter.java中调用openContactDetails。


openContactDetails位于MainActivity.java中:


    //...prior code


    public void openContactDetail(Context context, String currName, String currNumber){

        Intent intent = new Intent(context, ContactDetails.class);

        intent.putExtra("contactName", currName);

        intent.putExtra("contactPhone", currNumber);

        startActivity(intent);

    }

CustomAdapter.java并调用openContactDetails:


    private class ViewHolder{

        protected CheckBox checkBox;

        private TextView contactName;

    }


    public View getView(final int position, View convertView, ViewGroup parent){

        final ViewHolder holder;


        holder.checkBox = (CheckBox) convertView.findViewById(R.id.cb);

        holder.contactName = (TextView) convertView.findViewById(R.id.contact_name);


        holder.contactName.setOnClickListener(new View.OnClickListener(){


            MainActivity test = new MainActivity();


            @Override

            public void onClick(View v){

            //Toast.makeText(context, contactList.get(position).getName() + " selected at " + position, Toast.LENGTH_SHORT).show();


            test.openContactDetail(context,contactList.get(position).getName(), contactList.get(position).getNumber());


        }

    });




慕哥9229398
浏览 65回答 1
1回答

拉莫斯之舞

您不应该在 MainActivity 中调用该方法。如果您需要该方法,可以使用接口进行通信。我给你举了一个例子。您必须首先创建一个接口。public interface ICustomAdapterListener {   void openContactDetail(String currName, String currNumber);}那么你应该在活动中使用它。ICustomAdapterListener customAdapterListener = new ICustomAdapterListener() {    @Override    public void openContactDetail(String currName, String currNumber) {        Intent intent = new Intent(context, ContactDetails.class);        intent.putExtra("contactName", currName);        intent.putExtra("contactPhone", currNumber);        startActivity(intent);    }};为了访问活动中定义的接口,我们需要向适配器提供接口对象。我们可以使用 CustomAdapter 的构造函数来实现这一点。private ICustomAdapterListener listener;public CustomAdapter(ICustomAdapterListener listener) {    this.listener = listener;}最后public View getView(final int position, View convertView, ViewGroup parent){    final ViewHolder holder;    holder.checkBox = (CheckBox) convertView.findViewById(R.id.cb);    holder.contactName = (TextView) convertView.findViewById(R.id.contact_name);    holder.contactName.setOnClickListener(new View.OnClickListener(){        @Override        public void onClick(View v){        //Toast.makeText(context, contactList.get(position).getName() + " selected at " + position, Toast.LENGTH_SHORT).show();        if (listener!=nul) {           listener.openContactDetail(contactList.get(position).getName(), contactList.get(position).getNumber());        }    }});
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java