2016-07-04 3 views
0

Я хочу добавить пользовательский listview в один из моих фрагментов. У меня есть MainActivity и 3 фрагмента. Я смущен, должен ли я добавить XML-код listview в мой XML-код fragment или mainActivity.Как добавить пользовательский список в фрагмент

Это мой mainActivity.java:

public class MainActivity extends FragmentActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    // Get the view from activity_main.xml 
    setContentView(R.layout.activity_main); 

    // Locate the viewpager in activity_main.xml 
    ViewPager viewPager = (ViewPager) findViewById(R.id.pager); 

    // Set the ViewPagerAdapter into ViewPager 
    viewPager.setAdapter(new ViewPagerAdapter(getSupportFragmentManager())); 

    ViewPager mPager = (ViewPager) findViewById(R.id.pager); 
    mPager.setPageTransformer(true, new ZoomOutPageTransformer()); 

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { 
     getWindow().addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); 
     getWindow().setStatusBarColor(getResources().getColor(android.R.color.black)); 
    } 
    } 

} 

MainActivity.xml

<?xml version="1.0" encoding="utf-8"?> 
<android.support.v4.view.ViewPager xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/pager" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:background="@drawable/mainbg"> 

    <android.support.v4.view.PagerTabStrip 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_gravity="top" 
    android:paddingBottom="10dp" 
    android:paddingTop="10dp" 
    android:textSize="20sp" 
    android:textColor="#D3D3D3" 
    android:background="#33000000"/> 

    <ListView 
    android:id="@+id/song_list" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" > 
    </ListView> 

</android.support.v4.view.ViewPager> 
+0

добавить ListView в свой фрагмент –

+0

Ваш 'ListView' будет' fragment.xml' –

+0

в порядке, и я должен добавить настраиваемое представление списка в том же fragment.xml или в mainActivity.xml или в новом Резе макета file @ PhanVănLinh и kashyap jimuliya – HSBP

ответ

0

Использование ListView в your_fragment файл макета и создать новую структуру для пользовательской строки ListView и добавить данные строки в пользовательском адаптере.

ListView в компоновке фрагмента.

fragment.xml

<ListView 
    android:id="@+id/song_list" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" > 
</ListView> 

custom_row.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="horizontal" > 

    <TextView 
     android:id="@+id/sbjct" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textSize="10dp" /> 

    <TextView 
     android:id="@+id/wlcmtxt" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textSize="10dp" /> 

</LinearLayout> 

CustomAdapter.java

public class ListAdapter extends ArrayAdapter<NoteBean> { 

    Context context; 
    ArrayList<NoteBean> list; 

    public ListAdapter(Context context, ArrayList<NoteBean> list) { 
     super(context, R.layout.notice_list, list); 
     this.context = context; 
     this.list = list; 
    } 

    public class ViewHolder { 
     protected TextView txtSubject, txtNotice; 

    } 

    @Override 
    public View getView(final int position, View convertView, 
         ViewGroup parent) { 

     final ViewHolder viewHolder; 
     if (convertView == null) { 
      LayoutInflater inflater = (LayoutInflater) context 
        .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

      convertView = inflater.inflate(
        R.layout.notice_list, parent, false); 

      viewHolder = new ViewHolder(); 

      viewHolder.txtSubject = (TextView) convertView 
        .findViewById(R.id.sbjct); 
      viewHolder.txtNotice = (TextView) convertView 
        .findViewById(R.id.wlcmtxt); 

      convertView.setTag(viewHolder); 

     } else { 
      viewHolder = (ViewHolder) convertView.getTag(); 
     } 

     NoteBean item = list.get(position); 

     viewHolder.txtSubject.setTag(item); 
     viewHolder.txtNotice.setTag(item); 

     viewHolder.txtSubject.setText(item.getNewsSubject()); 
     viewHolder.txtNotice.setText(item.getNewsDescription()); 

     return convertView; 
    } 
} 

Набор Адаптер для ListView в фрагменте.

ListAdapter listAdapter = new ListAdapter(context, arrayList); 
list.setAdapter(listAdapter); 
+0

Сэр, пожалуйста, обратитесь к этому вопросу http://stackoverflow.com/questions/38189887/how-to-add-list-of-songs-from-storage-and-display-it-on -один-мои-фрагменты с указанным выше и отвечают, что именно я должен делать. – HSBP

+0

какой тип ошибки вы получаете в своем коде. Просьба указать трассировку стека или проблему. – user392117

+0

это не ошибка, с которой я сейчас сталкиваюсь. его слияние этих классов Java в мой фрагмент и основное действие. как я это делаю. В моей прокомментированной ссылке выше у меня есть эти другие классы Java, которые мне нужно включить, чтобы получить список в моем фрагменте. – HSBP

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