我在ItemActivity中有一个回收站视图,它的适配器是一个单独的类ItemAdapter。现在根据所选项目的数量,我需要更新放置在ItemActivity中的按钮上的文本。该怎么做?
注意:我已经将getApplicationContext()作为上下文传递给了Adapter。它传递了我在清单中设置的GlobalValue上下文。
Type Event
document.addEventListener('deviceready', () => {
admob.interstitial.load({
id: {
// replace with your ad unit IDs
android: 'ca-app-pub-1266469958489664/1154250177',
ios: 'ca-app-pub-xxx/zzz',
},
})
}, false)
document.addEventListener('admob.interstitial.load', () => {
// handle event
document.getElementById('showAd').onclick = function() {
admob.interstitial.show()
}
},)
这就是我实例化适配器对象的方式
<application
android:name=".GlobalValues"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:theme="@style/AppTheme">
我需要从适配器更改ItemActitvity中ItemCount的值!请告诉我如何实现。谢谢!
答案 0 :(得分:0)
最简单的方法是使Adapter类成为Activity类中包含的内部类。然后使您需要操作全局变量的View。
答案 1 :(得分:0)
从以下位置更改活动中的适配器实例:
ItemPickerAdapter adapter = new ItemPickerAdapter(getApplicationContext(), ItemsList);
对此:
ItemPickerAdapter adapter = new ItemPickerAdapter(this, ItemsList);
表示您通过活动的上下文,而不是应用程序的上下文。
然后在您的适配器类中声明以下内容:
MainActivity mainActivity = (MainActivity) context;
用活动的类名替换MainActivity
,并用Context的适配器类构造函数的参数名替换context
。
现在,您可以通过以下方式访问每个公共方法,属性和活动中的视图:
mainActivity.something
Edit1 :在活动类中使用变量
Context mainContext = this;
然后实例化适配器:
ItemPickerAdapter adapter = new ItemPickerAdapter(mainContext, ItemsList);
Edit2 :如果要从适配器访问活动的UI元素,例如TextView
,请在活动类中创建一个公共方法:
public void setTextViewText(String text) {
myTextView.setText(text);
}
并从适配器中调用它:
mainActivity.setTextViewText("some text");
答案 2 :(得分:0)
您可以执行以下操作
创建一个界面
public interface ItemCountListner {
void onItemCountUpdate(int count);
}
在您的活动中实现接口,并将引用传递给适配器
class MainActivity implements ItemCountListner {
---------
ItemPickerAdapter adapter = new ItemPickerAdapter(MainActivity.this, ItemsList, this);
---------
//implemented method
void onItemCountUpdate(int count){
// update your ui
}
}
在适配器构造函数中添加参数
public ItemPickerAdapter(上下文上下文,列表itemList, ItemCountListner侦听器)
通过调用更新您的用户界面
listener.onItemCountUpdate(count);
答案 3 :(得分:0)
在RecyclerView适配器内部,您可以定义自己的viewModel,在其中,您可以在所需的任何组件上附加onClick。例如:
public class MyViewHolder extends RecyclerView.ViewHolder
{
private TextView eachFeaturesName;
public MyViewHolder(@NonNull View itemView) {
super(itemView);
eachFeaturesName = itemView.findViewById(R.id.eachFeaturesName);
}
}
在onBindViewHolder函数中,您可以执行以下操作:
public void onBindViewHolder(@NonNull final MyViewHolder myViewHolder, final int position) {
//myViewHolder.eachFeaturesName.setonViewClickListener(...)
}
这是在RecyclerView上使用onClickListener的简单方法