为什么setText不起作用?
我试图让一个应用程序像一个NewsFeed凌空一个JSON文件,数据显示在cardviews中,我希望当用户点击cardviews打开整篇文章,为此我使用DialogFragment (我没有找到其他的方式),但问题是,当dialogfragment打开时只显示在布局中设置的默认文本,现在我只想显示dialogfragment中每篇文章的标题,我知道有很多代码中的错误,是因为来自另一个应用程序,希望有人可以给和建议,谢谢。为什么setText不起作用?
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);
}
}
}
(道歉回答,而不是评论 - 我没有必要的口碑评论)
这是不清楚你的意思是“标题”或你想要显示它,s o这很难帮助。我将假定标题为datos.get(position).getFeedName()
,并且您想要将其显示在TextView
中,其中引用存储在成员变量tituln
中。如果我错了,请纠正我。
如果这确实是你想要做的事,看起来问题是对话框片段中的代码实际上没有设置文本。我看到你在displayMetaInfo()
方法中调用了tituln.setText
,但这种方法从来没有被调用过(至少在提供的代码中)。
如果您只想让标题正常工作,您可能会考虑在某处拨打displayMetaInfo()
。我建议覆盖Detalles
中的[void onViewCreated(View, Bundle)
方法](https://developer.android.com/reference/android/app/Fragment.html#onViewCreated(android.view.View,android.os.Bundle))并在此处执行此操作。