作者lihohsin (新)
看板AndroidDev
标题Re: [问题] recyclerView怎麽控制外部layout
时间Thu Jul 22 14:10:45 2021
是想要这样
但是 MainActivity 已经extends ....
java不能多重继承
....
想说用interface
在adapter.java 加上
public interface DataChange
{
public void callFunction();
}
并在Activity实做
@Override
public void callFunction() {
}
那在adapter.java
@Override
public void onBindViewHolder(@NonNull MyCartAdapter.ViewHolder holder,
int position) {
holder.xxx.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
这里要如何呼叫interface中的callFunction???
}
});
}
});
}
※ 引述《lazior (懒人)》之铭言:
: 你的意思应该是recyclerView里面的item做了某事後,会改变Activity里的某元件吧?
: 一开始还以为你是要去侦测recyclerView的状态侦测(滚动中、闲置...)
: 我不知道这样的写法好不好,但你参考看看
: 作法是在Adapter定义一个function,并在onBindViewHolder的地方呼叫这个functoin
: 之後在Activity new这个Adapter时,复写这个function
: SomeAdapter:
: @Override
: public void onBindViewHolder(@NonNull MyCartAdapter.ViewHolder holder,
: int position) {
: holder.xxx.setOnClickListener(new View.OnClickListener() {
: @Override
: public void onClick(View v) {
: clickFunction();
: }
: });
: }
: public void clickFunction() {}
: MainActivity:
: public class MainActivity extends ... {
: private TextView textView;
: @Override
: protected void onCreate(Bundle savedInstanceState) {
: ...
: SomeAdapter adapter = new Adapter(...) {
: // 复写SomeAdapter里的clickFunction
: @Override
: public void clickFunction() {
: // do something you want here
: // 清空textView
: textView.setText("");
: }
: };
: }
: }
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 114.34.60.240 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/AndroidDev/M.1626934246.A.F66.html
※ 编辑: lihohsin (114.34.60.240 台湾), 07/22/2021 14:44:21
1F:推 now99: new Adapter()带进去 07/22 19:27
2F:推 lazior: 这样的话nash大的方法比较合乎你的意思 07/22 19:35
3F:推 aiweisen: 在activity中设一个callback object去实现你的interfac 07/22 22:39
4F:→ aiweisen: e,然後在new adapter的时候设把callback object丢进去 07/22 22:39
5F:→ aiweisen: adapter里面当全域变数,最後就是adapter中的item clic 07/22 22:39
6F:→ aiweisen: k触发时,透过传入的callback object回call 你的interf 07/22 22:39
7F:→ aiweisen: ace 07/22 22:39
8F:→ brandonron: 除非你要自定义参数的interface,不然就跟二楼说的一 07/24 01:16
9F:→ brandonron: 样。另外,是我就不会在activity把interface 用成全 07/24 01:16
10F:→ brandonron: 域方式实作,而是在adapter 中设置setter方式像参数 07/24 01:16
11F:→ brandonron: 方法,在使用者使用这个setter function在实作需要的 07/24 01:16
12F:→ brandonron: 参数,毕竟这功能是非必要性。 07/24 01:16
13F:推 taco2548: 原po应该是没理解new的时候可以直接复写而已 07/26 04:08
14F:→ taco2548: 我觉得两个方法都很好,端看原po自己的需求 07/26 04:08