我创建了一个自定义适配器类。在该类中,当我单击列表视图布局时,我有一个代码必须向我的片段发送消息。
谷歌搜索后,最好的方法可能是使用界面。其中大部分都是activity与fragment之间进行通信的例子。但就我而言,我对如何在适配器类与片段类之间进行通信没有任何想法。
假设我在适配器类中创建一个接口,如下所示:
public interface SuccessResponse{
void onSuccess();
}
在我的适配器类中的 LinearLayout 上,我希望它是这样的:
linearLayout.setOnClickListener(new View.OnClickListener{
@Override
public void onClick (View view){
SuccessResponse.onSuccess();
}
})
然后我想确保我的片段页面获得 onSuccess() 方法并执行类似以下操作:
public class MyFragment extends ListFragment implements Adapter.SuccessResponse{
@Override
public void onSuccess(){
//do Something
}
}
有什么办法可以做上面这样的事情吗?
Update如果您正在寻找 Kotlin 解决方案
class ExampleFragment : Fragment() {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
val adapter = MyAdapter(){
Log.d("zzzz", "$it ")
}
}
}
class MyAdapter (val onClick : (value: String) -> Unit): RecyclerView.Adapter<RecyclerView.ViewHolder>() {
override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {
holder.itemView.setOnClickListener {
onClick("something")
}
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder {
TODO("Not yet implemented")
}
override fun getItemCount(): Int {
TODO("Not yet implemented")
}
}
JAVA下面的代码可能对你有帮助。
public class ExampleFragment extends Fragment implements MyAdapter.SuccessResponse{
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View contentView = inflater.inflate(R.layout.my_layout, container, false);
MyAdapter myAdapter = new MyAdapter(getActivity(), 0);
myAdapter.successResponse = this;
return contentView;
}
@Override
public void onSuccess() {
}
}
class MyAdapter extends ArrayAdapter{
SuccessResponse successResponse;
public MyAdapter(Context context, int resource) {
super(context, resource);
}
public interface SuccessResponse{
void onSuccess();
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
//ur views
linearLayout.setOnClickListener(new View.OnClickListener{
@Override
public void onClick (View view){
if(successResponse!=null)
successResponse.onSuccess();
}
})
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)