2016-06-14 3 views
0

Я не знаком с тем, как добавлять элементы в список из фрагмента, но я пробовал. Он не показывает никаких ошибок. Но это тоже ничего не показывает. хорошо, я узнал, как сделать это с youtube. Он также отлично работал в основном классе активности, но в классе фрагментов он не работает. Так ПОМОГИТЕ.Почему List List не отображается во фрагменте?

Пункт просмотр списка:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:background="@android:color/transparent" 
    android:paddingLeft="5dp" 
    android:paddingRight="5dp" 
    android:orientation="vertical" 
    > 

    <LinearLayout 
     android:id="@+id/lyt" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:minHeight="1px" 
     android:gravity="left|top" 
     android:padding="2dp" 
     android:orientation="horizontal" > 

     <TextView 
      android:id="@+id/textView1" 
      android:layout_width="0dp" 
      android:layout_weight="5" 
      android:layout_height="wrap_content" 
      android:textColor="@color/darker_grey" 
      android:gravity="left|top" 
      android:textAppearance="?android:attr/textAppearanceMedium" 
      android:text="Name" 
      android:textStyle="bold"/> 

     <TextView 
      android:gravity="left|top" 
      android:id="@+id/textView3" 
      android:layout_width="wrap_content" 
      android:textAppearance="?android:attr/textAppearanceMedium" 
      android:layout_height="wrap_content" 
      android:textColor="@color/darker_grey" 
      android:paddingLeft="5dp" 
      android:paddingRight="10dp" 
      android:text=":" /> 

     <TextView 
      android:textStyle="bold" 
      android:gravity="left|top" 
      android:id="@+id/textView2" 
      android:layout_width="0dp" 
      android:layout_weight="6" 
      android:layout_height="wrap_content" 
      android:textColor="@color/darker_grey" 
      android:textAppearance="?android:attr/textAppearanceMedium" 
      android:text="Medium Text"/> 
    </LinearLayout> 

</LinearLayout> 

ussdz.java:

package com.buckydroid.app.droidcpu; 

/** 
* Created by BuckyDroid on 14-06-2016. 
*/ 
public class ussdz 
{ 
    private int id; 
    private String USSD; 
    private String Description; 

    public ussdz(String description, String s) { 
     Description = description; 
     this.USSD = USSD; 
     this.id = id; 
    } 

    public int getId() { 
     return id; 
    } 

    public void setId(int id) { 
     this.id = id; 
    } 

    public String getUSSD() { 
     return USSD; 
    } 

    public void setUSSD(String USSD) { 
     this.USSD = USSD; 
    } 

    public String getDescription() { 
     return Description; 
    } 

    public void setDescription(String description) { 
     Description = description; 
    } 
} 

ussdadaper.java:

package com.buckydroid.app.droidcpu; 

import android.content.Context; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.BaseAdapter; 
import android.widget.TextView; 

import java.util.List; 


/** 
* Created by BuckyDroid on 14-06-2016. 
*/ 
public class ussdadaper extends BaseAdapter { 
    private Context ussds; 
    private List<ussdz> ussdlist; 

    public ussdadaper(Context ussds, List<ussdz> ussdlist) { 
     this.ussds = ussds; 
     this.ussdlist = ussdlist; 
    } 

    @Override 
    public int getCount() { 
     return ussdlist.size(); 

    } 

    @Override 
    public Object getItem(int position) { 
     return ussdlist.get(position); 
    } 

    @Override 
    public long getItemId(int position) { 
     return position; 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     View v= View.inflate(ussds,R.layout.item_listview,null); 
     TextView ussdcode = (TextView)v.findViewById(R.id.textView1); 
     TextView ussddesc = (TextView)v.findViewById(R.id.textView2); 
     ussdcode.setText(ussdlist.get(position).getUSSD()); 
     ussddesc.setText(ussdlist.get(position).getDescription()); 
     return v; 


    } 
} 

ussd.java (фрагмента):

package layout; 

import android.app.Activity; 
import android.content.Context; 
import android.net.Uri; 
import android.os.Bundle; 
import android.support.v4.app.Fragment; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.ListView; 

import com.buckydroid.app.droidcpu.R; 
import com.buckydroid.app.droidcpu.ussdadaper; 
import com.buckydroid.app.droidcpu.ussdz; 
import com.google.android.gms.tagmanager.Container; 

import java.util.ArrayList; 
import java.util.List; 

/** 
* A simple {@link Fragment} subclass. 
* Activities that contain this fragment must implement the 
* {@link ussd.OnFragmentInteractionListener} interface 
* to handle interaction events. 
* Use the {@link ussd#newInstance} factory method to 
* create an instance of this fragment. 
*/ 
public class ussd extends Fragment { 
    // TODO: Rename parameter arguments, choose names that match 
    // the fragment initialization parameters, e.g. ARG_ITEM_NUMBER 
    private static final String ARG_PARAM1 = "param1"; 
    private static final String ARG_PARAM2 = "param2"; 

    // TODO: Rename and change types of parameters 
    private String mParam1; 
    private String mParam2; 
    private ListView listView; 
    private ussdadaper ussd; 
    private List<ussdz> ussdlist; 

    private OnFragmentInteractionListener mListener; 

    public ussd() { 
     // Required empty public constructor 
    } 

    /** 
    * Use this factory method to create a new instance of 
    * this fragment using the provided parameters. 
    * 
    * @param param1 Parameter 1. 
    * @param param2 Parameter 2. 
    * @return A new instance of fragment ussd. 
    */ 
    // TODO: Rename and change types and number of parameters 
    public static ussd newInstance(String param1, String param2) { 
     ussd fragment = new ussd(); 
     Bundle args = new Bundle(); 
     args.putString(ARG_PARAM1, param1); 
     args.putString(ARG_PARAM2, param2); 
     fragment.setArguments(args); 
     return fragment; 
    } 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     if (getArguments() != null) { 
      mParam1 = getArguments().getString(ARG_PARAM1); 
      mParam2 = getArguments().getString(ARG_PARAM2); 
     } 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     // Inflate the layout for this fragment 


     listView = (ListView)container.findViewById(R.id.listView); 
     ussdlist = new ArrayList<>(); 
     ussdlist.add(new ussdz("*#44336#","Software Version Info")); 
     ussdlist.add(new ussdz("*#44336#","Software Version Info")); 
     ussdlist.add(new ussdz("*#44336#","Software Version Info")); 
     ussdlist.add(new ussdz("*#44336#","Software Version Info")); 
     ussdlist.add(new ussdz("*#44336#","Software Version Info")); 
     ussdlist.add(new ussdz("*#44336#","Software Version Info")); 
     ussdlist.add(new ussdz("*#44336#","Software Version Info")); 
     ussdlist.add(new ussdz("*#44336#","Software Version Info")); 
     ussd = new ussdadaper(getActivity().getApplicationContext(),ussdlist); 


     return inflater.inflate(R.layout.fragment_ussd, container, false); 
    } 

    // TODO: Rename method, update argument and hook method into UI event 

    @Override 
    public void onAttach(Context context) { 
     super.onAttach(context); 
    } 

    @Override 
    public void onDetach() { 
     super.onDetach(); 
     mListener = null; 
    } 

     public interface OnFragmentInteractionListener { 
      public void onFragmentInteractionHome(Uri uri); 
      public void openHome(View view); 
     } 
    } 

    /** 
    * This interface must be implemented by activities that contain this 
    * fragment to allow an interaction in this fragment to be communicated 
    * to the activity and potentially other fragments contained in that 
    * activity. 
    * <p/> 
    * See the Android Training lesson <a href= 
    * "http://developer.android.com/training/basics/fragments/communicating.html" 
    * >Communicating with Other Fragments</a> for more information. 
    */ 
+0

ListView находится внутри 'fragment_ussd' вместо' container', использует тот же объект View для доступа к ListView, который я возвращаю из 'onCreateView' –

+0

надуть ваш xml-файл, который содержит listview –

+0

, можете ли вы объяснить мне? –

ответ

0

Вы не устанавливать адаптер в списке следует изменения вы onCreateView нравится

View rootView = inflater.inflate(R.layout.fragment_offer_detail_item, container, false); 

listView = (ListView)view.findViewById(R.id.listView); 
    ussdlist = new ArrayList<>(); 
    ussdlist.add(new ussdz("*#44336#","Software Version Info")); 
    ussdlist.add(new ussdz("*#44336#","Software Version Info")); 
    ussdlist.add(new ussdz("*#44336#","Software Version Info")); 
    ussdlist.add(new ussdz("*#44336#","Software Version Info")); 
    ussdlist.add(new ussdz("*#44336#","Software Version Info")); 
    ussdlist.add(new ussdz("*#44336#","Software Version Info")); 
    ussdlist.add(new ussdz("*#44336#","Software Version Info")); 
    ussdlist.add(new ussdz("*#44336#","Software Version Info")); 
    ussd = new ussdadaper(getActivity(),ussdlist); 
    listView .setAdapter(ussd); //you should setthe adapter to the listview 
     return rootView; 

Кроме того, ваш класс адаптера не следует шаблону viewholder, который подвержен ошибкам было бы лучше изменить его to viewHolder pattern

// Редактировать: Вы можете легко создать класс адаптера, вставив list_item xml в Layout Finder. Вы можете попробовать простую и сэкономить много времени.

+1

Это сработало ... Спасибо. И жаль, что я не могу поддержать ваш ответ, потому что У меня недостаточно репутации. –

+0

Счастлив, что это сработало. Я хотел напомнить вам, что метод, который вы использовали, не очень хороший. Вы могли бы исследовать лучший пример, следуя стандартам кодирования. –

+0

произошло еще одно событие http: // buckydroid .com/wp-content/uploads/2016/06/Screenshot_20160614-185657.png :( –

1

Заменить эту строку: List = (ListView) Container.findViewById (R.id.TaskListView);

Заменить приведенную выше строку следующим кодом: list = (ListView) getView(). FindViewById (R.id.TaskListView);

+0

не работает. :( –

+0

работал для меня !!!! спасибо:) – Prasheel

0

Попробуйте изменить метод OnCreateView как;

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) 
{ 
    View view = inflater.inflate(R.layout.fragment_ussd, container, false); 

    listView = (ListView)view.findViewById(R.id.listView); 
    ussdlist = new ArrayList<>(); 
    ussdlist.add(new ussdz("*#44336#","Software Version Info")); 
    ussdlist.add(new ussdz("*#44336#","Software Version Info")); 
    ussdlist.add(new ussdz("*#44336#","Software Version Info")); 
    ussdlist.add(new ussdz("*#44336#","Software Version Info")); 
    ussdlist.add(new ussdz("*#44336#","Software Version Info")); 
    ussdlist.add(new ussdz("*#44336#","Software Version Info")); 
    ussdlist.add(new ussdz("*#44336#","Software Version Info")); 
    ussdlist.add(new ussdz("*#44336#","Software Version Info")); 
    ussd = new ussdadaper(getActivity(),ussdlist); 

    listView.setAdapter(ussd); //Set Adapter 

    return view; 
} 
+0

все еще не работает :( –

+0

Я отредактировал код. Просто установите адаптер. – Nayan

0

комплект адаптера для списка в виде listview.setAdapter (mAapter);

Смежные вопросы