为什么setText不起作用?

时间:2016-11-10 23:07:34

标签: java android textview

我正在尝试创建一个类似于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);

    }

}

}

1 个答案:

答案 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))并在那里进行。