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());
}
}
});
添加回答
举报