Muk*_*hra 4 android exception android-fragments baseadapter
我在片段中创建了一个函数.我想在按钮点击时调用该函数,这是在自定义适配器中,但我无法从自定义适配器调用片段的功能.
我的适配器代码是单击一个按钮并调用片段的功能
viewHolder.accept.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
removeListItem(viewHolder.order_card_layout, position);
android.support.v4.app.Fragment newFragment = new NewPageActivity();
android.support.v4.app.FragmentTransaction ft = ((FragmentActivity)mContext).getSupportFragmentManager().beginTransaction();
ft.sendorder(data.getorder_id());
ft.add(R.id.framelay, newFragment).commit();
}
});
Run Code Online (Sandbox Code Playgroud)
我的功能是碎片
public class NewPageActivity extends Fragment{
public void SendOrder( String OrderId)
{
final String serverid = sp.getString("serverid", "null");
Log.e("TAG", "SendOrder: "+serverid +OrderId );
new SendOrder().execute(new Config().addNewOrder, serverid, OrderId);
}
}
Run Code Online (Sandbox Code Playgroud)
小智 12
在适配器中创建一个接口类,并在您的片段类中实现,如下所示
内部适配器类
public Interface CallBack{
void yourMethodName();
}
Run Code Online (Sandbox Code Playgroud)
现在在fragment类中实现你的接口方法,如下所示
public class YourFragment implements CallBack{
...........
@Override
public void yourMethodName(){
//"here call your fragment method or do any bussiness logic
}
}
Run Code Online (Sandbox Code Playgroud)
最后,在将接口实例传递给适配器构造函数之前,应该在适配器onclick侦听器中调用接口方法,如下所示
public class YourAdapterClass extends BaseAdapter {
private CallBack mCallBack;
public YourAdapterClass (CallBack callback){
mCallBack = callback;
}
}
Run Code Online (Sandbox Code Playgroud)
然后在你的onClickListener中调用这样的接口方法
@Override
public void onClick(View v) {
mCallBack.yourMethodName();
}
});
Run Code Online (Sandbox Code Playgroud)
完成
在片段中调用适配器。
autoWitDrawRuleListAdapter = new AutoWithRuleListListAdapter(getContext(), AutoViewRuleFragment.this, lookupData);
recycleRuleList.setAdapter(autoWitDrawRuleListAdapter);
Run Code Online (Sandbox Code Playgroud)
构造函数:-
private Context context;
private Fragment fragment;
private ArrayList<ObjGetLookupDataResponseIn> lookupData;
public AutoWithRuleListListAdapter(Context context, Fragment fragment, ArrayList<ObjGetLookupDataResponseIn> lookupData) {
this.context = context;
this.fragment = fragment;
this.lookupData = lookupData;
}
@Override
public void onBindViewHolder(final ViewHolder holder, @SuppressLint("RecyclerView") final int position) {
String output = lookupData.get(position).getDisplayName().substring(0, 1).toUpperCase() + lookupData.get(position).getDisplayName().substring(1);
holder.radioBen.setText(output);
holder.radioBen.setOnCheckedChangeListener(null);
holder.radioBen.setChecked(lookupData.get(position).isSelected());
holder.radioBen.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
resetAll();
lookupData.get(position).setSelected(true);
notifyDataSetChanged();
((AutoViewRuleFragment)fragment).ruleName(position);
}
});
}
Run Code Online (Sandbox Code Playgroud)
Fragment 类中的方法。
public void ruleName(int position) {
//your logic.
}
Run Code Online (Sandbox Code Playgroud)
希望这会有所帮助。如果您觉得它有用,请投票。快乐编码。
归档时间: |
|
查看次数: |
8273 次 |
最近记录: |