2016-11-10 3 views
0

Ich versuche, eine App wie ein NewsFeed mit Volley und eine JSON-Datei zu machen, die Daten in Cardviews angezeigt und ich möchte, dass, wenn der Benutzer in den cardviews klickt es den gesamten Artikel öffnet und ich dafür ein DialogFragment verwende (Ich finde nicht anders), aber das Problem ist, dass, wenn das Dialogfeld öffnet nur die Standard-Text im Layout angezeigt, für jetzt möchte ich nur den Titel jedes Artikels im Dialogfragment anzeigen, ich weiß, es gibt eine Menge der Fehler im Code und ist, weil von einer anderen App ist, hoffe jemand geben und Ratschläge, danke.Warum setText funktioniert nicht?

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); 

    } 

} 

} 

Antwort

0

(Apologies für die Beantwortung nicht kommentieren - ich nicht den erforderlichen Ruf Kommentar)

Es ist nicht klar, was du mit "titel" meinst oder wie du es anzeigen willst, s o es ist ziemlich schwierig zu helfen. Ich gehe davon aus, dass der Titel datos.get(position).getFeedName() lautet und Sie ihn in der TextView anzeigen möchten, für die eine Referenz in der Elementvariablen tituln gespeichert ist. Bitte korrigieren Sie mich, falls ich falsch liege.

Wenn dies in der Tat das ist, was Sie tun möchten, sieht es so aus, als ob das Problem darin besteht, dass keiner der Codes im Dialogfragment den Text tatsächlich setzt. Ich sehe, dass Sie einen Anruf an tituln.setText in der displayMetaInfo()-Methode haben, aber diese Methode wird nie aufgerufen (zumindest in dem bereitgestellten Code).

Wenn Sie nur wollen, dass der Titel funktioniert, möchten Sie möglicherweise in Erwägung ziehen, displayMetaInfo() irgendwo anzurufen. Ich würde empfehlen, die [void onViewCreated(View, Bundle) Methode] (https://developer.android.com/reference/android/app/Fragment.html#onViewCreated(android.view.View, android.os.Bundle)) in Detalles zu überschreiben und es dort zu tun.

Verwandte Themen