我正在尝试创建一个类似于NewsFeed的应用程序,其中包含一个JSON文件,数据显示在cardviews中,我希望当用户点击cardviews时它会打开整篇文章,为此我正在使用DialogFragment(我没有找到其他方法),但问题是当dialogfragment打开时只显示布局中的默认文本集,现在我只想在dialogfragment中显示每篇文章的标题,我知道有一个代码中有很多错误,因为来自另一个应用程序,希望有人可以提供和建议,谢谢。
MainActivity
recyclerView.addOnItemTouchListener(new MyRecyclerAdapter.RecyclerTouchListener(getApplicationContext(), recyclerView, new MyRecyclerAdapter.ClickListener() {
@Override
public void onClick(View view, int position) {
Bundle bundle = new Bundle();
bundle.putSerializable("images", datos);
bundle.putInt("position", position);
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
Detalles newFragment = Detalles.newInstance();
newFragment.setArguments(bundle);
newFragment.show(ft, "slideshow");
}
Detalles.java
public class Detalles extends DialogFragment{
private String TAG = Detalles.class.getSimpleName();
private ArrayList<NewsFeed> datos;
private TextView tituloon, notoon;
private View viewPager;
private MyViewPagerAdapter myViewPagerAdapter;
private int selectedPosition = 0;
static Detalles newInstance() {
Detalles f = new Detalles();
return f;
}
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.detalles_completo, container, false);
tituln = (TextView) v.findViewById(R.id.titulon);
notlnn = (TextView) v.findViewById(R.id.noton);
datos = (ArrayList<NewsFeed>) getArguments().getSerializable("images");
myViewPagerAdapter = new MyViewPagerAdapter();
selectedPosition = getArguments().getInt("position");
return v;
}
private void displayMetaInfo(int position) {
NewsFeed image = datos.get(position);
tituln.setText(image.getFeedName());
notlnn.setText(image.getContent());
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
public class MyViewPagerAdapter extends PagerAdapter {
private LayoutInflater layoutInflater;
public MyViewPagerAdapter() {
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
layoutInflater = (LayoutInflater) getActivity().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View view = layoutInflater.inflate(R.layout.detalles_completo, container, false);
NewsFeed image = datos.get(position);
tituln.setText(image.getFeedName());
container.addView(view);
return view;
}
@Override
public int getCount() {
return datos.size();
}
@Override
public boolean isViewFromObject(View view, Object obj) {
return view == ((View) obj);
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView((View) object);
}
}
}
答案 0 :(得分:0)
(为回答而不是评论道歉 - 我没有必要的评论声誉)
目前尚不清楚你的意思是什么&#34; title&#34;或者你想要展示什么,所以它很难提供帮助。我将假设标题为datos.get(position).getFeedName()
,并且您希望将其显示在成员变量TextView
中存储引用的tituln
中。如果我错了,请纠正我。
如果这确实是你想要做的,那么看起来问题是对话框片段中的所有代码都没有实际设置文本。我看到您在tituln.setText
方法中调用了displayMetaInfo()
,但从未调用此方法(至少在提供的代码中)。
如果您只想让标题正常工作,您可能会考虑在某处调用displayMetaInfo()
。我建议在void onViewCreated(View, Bundle)
中覆盖[Detalles
方法](https://developer.android.com/reference/android/app/Fragment.html#onViewCreated(android.view.View,android.os.Bundle))并在那里进行。