【发布时间】:2017-03-24 04:40:33
【问题描述】:
我需要帮助才能将标签标题传递给我在点击项目 recyclerview 上的详细活动。然后我想将该标题显示为操作栏标题
在我点击卡片视图上的项目后,他们将显示详细活动 我将在操作栏标题上显示 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 以详细了解活动:
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;
}
}
抱歉我的英语不好。
【问题讨论】:
-
将选项卡标题作为参数传递到相应的片段中。然后点击使用该参数传递给下一个活动
-
你有你的解决方案还是我还需要发布答案?
-
@DivyeshPatel 如何获取片段的标题名称? .so 之后,我在 onclick cardview 中通过额外的意图传递标题?
-
@Wizard 还没有..我知道设置标题但我不知道如何将标签上的标题传递给下一个活动..你能帮我吗?
标签: android android-fragments tabs android-actionbar android-recyclerview