将选项卡标题 recyclerview 传递给活动
pass tab title recyclerview to acticity
我需要帮助将选项卡标题传递给我的详细信息 activity 点击项目 recyclerview。然后我想将该标题显示为操作栏标题
这是我的 recyclerview 选项卡:
在我点击 cardview 上的项目后,它们将显示详细信息 activity
我将在操作栏标题上显示 tabtile :
所以标题基于包含 recylerview 的选项卡(类别)。
有关信息,我使用寻呼机适配器来显示标题,并在我的回收站视图中使用适配器。所以我应该将标题传递给适配器吗?
mainactivity(显示选项卡和卡片视图)代码:
class PagerAdapter extends FragmentPagerAdapter {
String tabTitles[] = new String[] { "Terbaru","Pilihan", "Prediksi", "Inggris", "Spanyol","Italy","Jerman","Prancis","Indonesia"};
Context context;
public PagerAdapter(FragmentManager fm, Context context) {
super(fm);
this.context = context;
}
@Override
public int getCount() {
return tabTitles.length;
}
@Override
public Fragment getItem(int position) {
switch (position) {
case 0:
return new BlankFragment();
case 1:
return new EditorFragment();
case 2:
return new PrediksiFragment();
case 3:
return new InggrisFragment();
case 4:
return new SpanyolFragment();
case 5:
return new ItalyFragment();
case 6:
return new JermanFragment();
case 7:
return new PrancisFragment();
case 8:
return new IndonesiaFragment(); }
return null;
}
@Override
public CharSequence getPageTitle(int position) {
// Generate title based on item position
return tabTitles[position];
}
public View getTabView(int position) {
View tab = LayoutInflater.from(MainActivity.this).inflate(R.layout.custom_tab, null);
TextView tv = (TextView) tab.findViewById(R.id.custom_text);
tv.setText(tabTitles[position]);
return tab;
}
}
我的适配器与 onclick cardview 详细 activity:
public MyAdapter.MyViewHolder onCreateViewHolder(ViewGroup parent,
int viewType) {
mContext = parent.getContext();
// create a new view
View v = LayoutInflater.from(parent.getContext())
.inflate(R.layout.card_item, parent, false);
// set the view's size, margins, paddings and layout parameters
MyViewHolder vh = new MyViewHolder(v);
return vh;
}
@Override
public void onBindViewHolder(MyAdapter.MyViewHolder holder, final int position) {
Glide.with(mContext).load(String.valueOf(coba.get(position).getBetterFeaturedImage().getMediaDetails().getSizes().getMedium().getSourceUrl()))
.thumbnail(0.8f)
.override(220,220)
.crossFade()
.diskCacheStrategy(DiskCacheStrategy.ALL)
.into(holder.mImgPost);
holder.mTextView.setText(Html.fromHtml(String.valueOf(coba.get(position).getTitle().getRendered())));
// holder.mDetView.setText(Html.fromHtml(String.valueOf(coba.get(position).getContent().getRendered())));
// holder.mDetView.setText(String.valueOf(coba.get(position).getSlug()));
Locale locale= new Locale("id","ID");
SimpleDateFormat sourceFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
SimpleDateFormat destFormat = new SimpleDateFormat("dd-MMM-yyyy",locale); //here 'a' for AM/PM
Date date = null;
try {
date = sourceFormat.parse(String.valueOf(coba.get(position).getDate()));
} catch (ParseException e) {
e.printStackTrace();
}
final String formattedDate = destFormat.format(date);
holder.mVerView.setText(formattedDate);
holder.mCardView.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
Intent intent = new Intent(v.getContext(),DetailBerita.class);
intent.putExtra("Gambar",String.valueOf(coba.get(position).getBetterFeaturedImage().getMediaDetails().getSizes().getMedium().getSourceUrl()));
intent.putExtra("Content",String.valueOf(coba.get(position).getContent().getRendered()));
intent.putExtra("Judul",String.valueOf(coba.get(position).getTitle().getRendered()));
intent.putExtra("Tanggal",formattedDate);
intent.putExtra("Link",String.valueOf(coba.get(position).getLink()));
intent.putExtra("Tags",String.valueOf(coba.get(position).getTags()));
v.getContext().startActivity(intent);
System.out.println("Clicked");
}
});
}
我加载回收器视图的示例框架:
public EditorFragment() {
// Required empty public constructor
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
loadJSON();
}
private void loadJSON(){
final ProgressDialog loading = ProgressDialog.show(getActivity(),"Memuat Berita","Harap tunggu..",false,false);
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("http://www.sumberbola.com/wp-json/wp/")
.addConverterFactory(GsonConverterFactory.create())
.build();
RequestSumbol request = retrofit.create(RequestSumbol.class);
Call<List<Coba>> call = request.getPostDet();
call.enqueue(new Callback<List<Coba>>() {
@Override
public void onResponse(Call<List<Coba>> call, Response<List<Coba>> response) {
try {
List<Coba> jsonResponse = response.body();
data= new ArrayList<>();
data.addAll(jsonResponse);
adapter = new MyAdapter(data);
adapter.notifyDataSetChanged();
recyclerView.setAdapter(adapter);
loading.dismiss();
// bar.setVisibility(View.GONE);
Log.i("HASIL", "onResponse: "+data);
}catch (Exception e) {
Log.d("onResponse", "There is an error");
e.printStackTrace();
}
}
@Override
public void onFailure(Call<List<Coba>> call, Throwable t) {
Log.d("Error",t.getMessage());
}
});
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View rootView = inflater.inflate(R.layout.fragment_blank, container, false);
//avi = (AVLoadingIndicatorView) rootView.findViewById(R.id.barload);
recyclerView = (RecyclerView) rootView.findViewById(R.id.rv_recycler_view);
recyclerView.setHasFixedSize(true);
// loadJSON();
adapter = new MyAdapter(data);
recyclerView.setAdapter(adapter);
LinearLayoutManager llm = new LinearLayoutManager(getActivity());
recyclerView.setLayoutManager(llm);
return rootView;
}
}
抱歉我的英语不好。
首先从适配器获取标题并使用 intent extra 传递此文本,然后在下一个 activity 工具栏中设置此文本。
getSupportActionBar().setTitle("your title");
喜欢这个通行证标题:
fragment2 =new PrediksiFragment();
Bundle arg= new Bundle();
arg.putString("title","TITLE");
fragment2.setArguments(arg);
return fragment2;
现在在 create() 的片段中:
Bundle pb=getArguments();
String title=pb.getString("title");
好的,有 3 个步骤 -
1) 您需要先将标题传递给 fragment
-- 查看我的 answer
在你的情况下你需要做一些事情 -
switch (position) {
case 0:
return BlankFragment.newInstance(tabTitles[position]);
2) 使用 getArguments()
为您的片段获取标题,这与 getIntent().getExtras()
对于 Activity
.
的作用一样
您的 BlackFragment
将有 -
String title = getArguments().getString("your_key_of_extras");
3) 单击 recyclerview
项时传递此标题 -
这是可以使用 interface
的方法 -
创建和接口
public interface OnListClickedListener () {
void onItemClicked(int position);
}
in Adapter
class 为 interface
创建 setter
public class MyAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private OnListClickedListener _listener;
public MyAdapter (Context context, OnListClickedListener listener) {
...
this._listener = onListClickedListener;
}
class MyHolder extends RecyclerView.ViewHolder {
CardView mCardContainer;
AddedProductHolder(View itemView) {
super(itemView);
....
mCardContainer.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if ( _listener == null ) return;
_listener.OnListClicked(getAdapterPosition());
}
});
}
}
}
现在在您的 Fragment
中设置 Adapter
-
mAdapter = new MyAdapter(context, mDataSet, new OnListClickedListener() {
@Override
public void OnListClicked(int position) {
// This is your cardView click event, You got the position
// Pass title using Intent to TargetActivity
// Since this code will be in your Fragment
}
});
我需要帮助将选项卡标题传递给我的详细信息 activity 点击项目 recyclerview。然后我想将该标题显示为操作栏标题
这是我的 recyclerview 选项卡:
在我点击 cardview 上的项目后,它们将显示详细信息 activity 我将在操作栏标题上显示 tabtile :
mainactivity(显示选项卡和卡片视图)代码:
class PagerAdapter extends FragmentPagerAdapter {
String tabTitles[] = new String[] { "Terbaru","Pilihan", "Prediksi", "Inggris", "Spanyol","Italy","Jerman","Prancis","Indonesia"};
Context context;
public PagerAdapter(FragmentManager fm, Context context) {
super(fm);
this.context = context;
}
@Override
public int getCount() {
return tabTitles.length;
}
@Override
public Fragment getItem(int position) {
switch (position) {
case 0:
return new BlankFragment();
case 1:
return new EditorFragment();
case 2:
return new PrediksiFragment();
case 3:
return new InggrisFragment();
case 4:
return new SpanyolFragment();
case 5:
return new ItalyFragment();
case 6:
return new JermanFragment();
case 7:
return new PrancisFragment();
case 8:
return new IndonesiaFragment(); }
return null;
}
@Override
public CharSequence getPageTitle(int position) {
// Generate title based on item position
return tabTitles[position];
}
public View getTabView(int position) {
View tab = LayoutInflater.from(MainActivity.this).inflate(R.layout.custom_tab, null);
TextView tv = (TextView) tab.findViewById(R.id.custom_text);
tv.setText(tabTitles[position]);
return tab;
}
}
我的适配器与 onclick cardview 详细 activity:
public MyAdapter.MyViewHolder onCreateViewHolder(ViewGroup parent,
int viewType) {
mContext = parent.getContext();
// create a new view
View v = LayoutInflater.from(parent.getContext())
.inflate(R.layout.card_item, parent, false);
// set the view's size, margins, paddings and layout parameters
MyViewHolder vh = new MyViewHolder(v);
return vh;
}
@Override
public void onBindViewHolder(MyAdapter.MyViewHolder holder, final int position) {
Glide.with(mContext).load(String.valueOf(coba.get(position).getBetterFeaturedImage().getMediaDetails().getSizes().getMedium().getSourceUrl()))
.thumbnail(0.8f)
.override(220,220)
.crossFade()
.diskCacheStrategy(DiskCacheStrategy.ALL)
.into(holder.mImgPost);
holder.mTextView.setText(Html.fromHtml(String.valueOf(coba.get(position).getTitle().getRendered())));
// holder.mDetView.setText(Html.fromHtml(String.valueOf(coba.get(position).getContent().getRendered())));
// holder.mDetView.setText(String.valueOf(coba.get(position).getSlug()));
Locale locale= new Locale("id","ID");
SimpleDateFormat sourceFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
SimpleDateFormat destFormat = new SimpleDateFormat("dd-MMM-yyyy",locale); //here 'a' for AM/PM
Date date = null;
try {
date = sourceFormat.parse(String.valueOf(coba.get(position).getDate()));
} catch (ParseException e) {
e.printStackTrace();
}
final String formattedDate = destFormat.format(date);
holder.mVerView.setText(formattedDate);
holder.mCardView.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
Intent intent = new Intent(v.getContext(),DetailBerita.class);
intent.putExtra("Gambar",String.valueOf(coba.get(position).getBetterFeaturedImage().getMediaDetails().getSizes().getMedium().getSourceUrl()));
intent.putExtra("Content",String.valueOf(coba.get(position).getContent().getRendered()));
intent.putExtra("Judul",String.valueOf(coba.get(position).getTitle().getRendered()));
intent.putExtra("Tanggal",formattedDate);
intent.putExtra("Link",String.valueOf(coba.get(position).getLink()));
intent.putExtra("Tags",String.valueOf(coba.get(position).getTags()));
v.getContext().startActivity(intent);
System.out.println("Clicked");
}
});
}
我加载回收器视图的示例框架:
public EditorFragment() {
// Required empty public constructor
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
loadJSON();
}
private void loadJSON(){
final ProgressDialog loading = ProgressDialog.show(getActivity(),"Memuat Berita","Harap tunggu..",false,false);
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("http://www.sumberbola.com/wp-json/wp/")
.addConverterFactory(GsonConverterFactory.create())
.build();
RequestSumbol request = retrofit.create(RequestSumbol.class);
Call<List<Coba>> call = request.getPostDet();
call.enqueue(new Callback<List<Coba>>() {
@Override
public void onResponse(Call<List<Coba>> call, Response<List<Coba>> response) {
try {
List<Coba> jsonResponse = response.body();
data= new ArrayList<>();
data.addAll(jsonResponse);
adapter = new MyAdapter(data);
adapter.notifyDataSetChanged();
recyclerView.setAdapter(adapter);
loading.dismiss();
// bar.setVisibility(View.GONE);
Log.i("HASIL", "onResponse: "+data);
}catch (Exception e) {
Log.d("onResponse", "There is an error");
e.printStackTrace();
}
}
@Override
public void onFailure(Call<List<Coba>> call, Throwable t) {
Log.d("Error",t.getMessage());
}
});
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View rootView = inflater.inflate(R.layout.fragment_blank, container, false);
//avi = (AVLoadingIndicatorView) rootView.findViewById(R.id.barload);
recyclerView = (RecyclerView) rootView.findViewById(R.id.rv_recycler_view);
recyclerView.setHasFixedSize(true);
// loadJSON();
adapter = new MyAdapter(data);
recyclerView.setAdapter(adapter);
LinearLayoutManager llm = new LinearLayoutManager(getActivity());
recyclerView.setLayoutManager(llm);
return rootView;
}
}
抱歉我的英语不好。
首先从适配器获取标题并使用 intent extra 传递此文本,然后在下一个 activity 工具栏中设置此文本。
getSupportActionBar().setTitle("your title");
喜欢这个通行证标题:
fragment2 =new PrediksiFragment();
Bundle arg= new Bundle();
arg.putString("title","TITLE");
fragment2.setArguments(arg);
return fragment2;
现在在 create() 的片段中:
Bundle pb=getArguments();
String title=pb.getString("title");
好的,有 3 个步骤 -
1) 您需要先将标题传递给 fragment
-- 查看我的 answer
在你的情况下你需要做一些事情 -
switch (position) {
case 0:
return BlankFragment.newInstance(tabTitles[position]);
2) 使用 getArguments()
为您的片段获取标题,这与 getIntent().getExtras()
对于 Activity
.
您的 BlackFragment
将有 -
String title = getArguments().getString("your_key_of_extras");
3) 单击 recyclerview
项时传递此标题 -
这是可以使用 interface
的方法 -
创建和接口
public interface OnListClickedListener () {
void onItemClicked(int position);
}
in Adapter
class 为 interface
public class MyAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private OnListClickedListener _listener;
public MyAdapter (Context context, OnListClickedListener listener) {
...
this._listener = onListClickedListener;
}
class MyHolder extends RecyclerView.ViewHolder {
CardView mCardContainer;
AddedProductHolder(View itemView) {
super(itemView);
....
mCardContainer.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if ( _listener == null ) return;
_listener.OnListClicked(getAdapterPosition());
}
});
}
}
}
现在在您的 Fragment
中设置 Adapter
-
mAdapter = new MyAdapter(context, mDataSet, new OnListClickedListener() {
@Override
public void OnListClicked(int position) {
// This is your cardView click event, You got the position
// Pass title using Intent to TargetActivity
// Since this code will be in your Fragment
}
});