我试图通过适配器之间的对话框将数据从适配器传递到活动。
我当前的数据流是
RecyclerAdapter->确认活动->聊天活动
我想要的
RecyclerAdapter->自定义对话框->聊天活动
以前,在单击时,我只是打算将其转移到确认活动中,然后再转移到聊天活动中,但是现在无法执行此操作。我在post上读过有关使用共享首选项的信息,但是无法成功实现,因此我想知道是否有更好的方法来解决这个问题,如果我丢失任何信息,请告知我,我将对其进行更新< / p>
适配器
<?xml version="1.0" encoding="UTF-8" ?>
<resources>
<style name="InspectTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="android:windowNoTitle">true</item>
<item name="android:windowActionBar">false</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:textAllCaps">false</item>
</style>
<style name="InspectTheme.Splash" parent ="Theme.AppCompat.Light.NoActionBar">
<!--<item name="android:windowSplashscreenContent">@mipmap/ic_splash</item>-->
<item name="android:windowBackground">@mipmap/ic_splash</item>
<item name="android:windowNoTitle">true</item>
<item name="android:noHistory">true</item>
<item name="android:windowFullscreen">true</item>
</style>
</resources>
对话
public void openDialog(){
FragmentManager manager = ((AppCompatActivity)mContext).getSupportFragmentManager();
Confirmation_Dialog confirmation_dialog = new Confirmation_Dialog();
confirmation_dialog.show(manager, "example dialog");
}
}
答案 0 :(得分:0)
只需使用捆绑包将数据传递到新的活动即可。
在适配器中
String value="Hello world";
Intent i = new Intent(context, NewActivity.class);
i.putExtra("key",value);
startActivity(i);
然后在新的活动中,检索这些值:
Bundle extras = getIntent().getExtras();
if (extras != null) {
String value = extras.getString("key");
//The key argument here must match that used in the other activity
}
答案 1 :(得分:0)
您的对话框是FragmentDialog
,您可以使用setArguments
方法来传递参数。
答案 2 :(得分:0)
不要使用共享首选项来传递数据,共享首选项更像是将数据保存在手机中以备将来参考。在这种情况下(如建议使用@average_developer),请使用Intent Bundles
将数据传递到目标活动。
我认为,在您的情况下,您必须使用(下面的代码)实际获取一些信息,以标识在接下来的活动中将创建哪个聊天。
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int pos, long l) {
Intent i = new Intent(this, ProductActivity.class);
i.putExtra("item_id", manager.getItemIdAtIndex(pos));
startActivity(i);
}
答案 3 :(得分:0)
您可以在活动类中创建适配器click事件,并像下面在适配器中那样使接口进入适配器:
onCircularsClick _oncircularClick;
public interface onCircularsClick {
public void _onCircularClick(Circular.TableBean bean);
}
您的适配器构造器
public CircularListAdapter(Context ctx, onCircularsClick __oncircularClick) {
this.ctx = ctx;
this._oncircularClick = __oncircularClick;
}
并设置点击类似
viewHolder.lin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
_oncircularClick._onCircularClick(list.get(i));//data that you want to pass when click fires
}
});
在从活动中设置适配器的同时,您可以在该位置获得此click事件,因此可以将代码(单击(打开对话框))写入活动类中
答案 4 :(得分:0)
我没有将对话框保存在单独的文件中,而是将其移入了适配器类