亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在CustomAdapter類中調用新的意圖?

如何在CustomAdapter類中調用新的意圖?

慕哥9229398 2023-10-19 21:44:16
我對 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());        }    });
查看完整描述

1 回答

?
拉莫斯之舞

TA貢獻1820條經驗 獲得超10個贊

您不應該在 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());

        }


    }

});


查看完整回答
反對 回復 2023-10-19
  • 1 回答
  • 0 關注
  • 118 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號