Placing a text fragment on top of a list fragment

How to add a text view on top of the fragment. I use the following adapter to populate the list, and the xml file is each line in the list. Do I need to add a textview ontop listview that should be scrollable along with the list?

public class Adapter extends BaseAdapter { Context context; public TextView txtName; public TextView txtTitle; private LayoutInflater mInflater; private Storage storage; FontManager fontManager; Typeface typeface; public Adapter(Context _context,Storage _storage) { context = _context; mInflater = LayoutInflater.from(context); this.storage = _storage; fontManager = new FontManager(_context); typeface = fontManager.getTypeFace(); } @Override public int getCount() { // TODO Auto-generated method stub return _storage.size(); } @Override public Object getItem(int arg0) { // TODO Auto-generated method stub return null; } @Override public long getItemId(int arg0) { // TODO Auto-generated method stub return 0; } @Override public View getView(int position, View convertView, ViewGroup parent) { // TODO Auto-generated method stub convertView = mInflater.inflate(R.layout.row3, null); txtName = (TextView) convertView.findViewById(R.id.tvName); txtName.setTypeface(typeface); txtName.setText(storage.getName(position)); txtTitle = (TextView) convertView.findViewById(R.id.tvTitle); txtTitle.setTypeface(typeface); txtTitle.setText(storage.getTitle(position)); return convertView; } } 

XML:

  <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center_vertical" android:orientation="vertical" android:padding="20dp" android:scrollbars="none" android:id="@+id/ll1"> <TextView android:id="@+id/tvName" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="TextView" android:textColor="@android:color/black" android:textSize="20sp" android:textStyle="bold" /> <TextView android:id="@+id/tvTitle" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="TextView" android:textColor="@android:color/black" /> </LinearLayout> 

ListFragment:

  public class SampleListFragment extends ListFragment { int number; @Override public void onActivityCreated(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onActivityCreated(savedInstanceState); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { number = getArguments().getInt( "num", 0); new SampleAsyncTask(this, getActivity(), number).execute(); return super.onCreateView(inflater, container, savedInstanceState); } @Override public void onListItemClick(ListView l, View v, int position, long id) { // TODO Auto-generated method stub } } } 

The AsyncTask class uses the following code to populate a list fragment

 Adapter adapter = new Adapter(context, storage); listFragment.setListAdapter(adapter); 
+4
source share
2 answers

You can do as shown below, or add a text view as a title to your list

Quote from the docs

ListActivity (similar to ListFragment) has a default layout, which consists of a single full-screen list in the center of the screen. However, if you wish, you can customize the screen layout by setting your own view layout using setContentView() in the onCreate () object . To do this, your own view MUST contain a . To do this, your own view MUST contain a ListView` with id "@android: id / list" (or list if it is in code)

activity_main.xml

  <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity" > <fragment android:name="com.example.listfragment.MyFragment" android:id="@+id/frag" android:layout_above="@+id/button1" android:layout_width="fill_parent" android:layout_height="fill_parent" /> </RelativeLayout> 

MyFragment.java

 public class MyFragment extends ListFragment { String names[] ={"A","B","C"}; @Override public void onActivityCreated(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onActivityCreated(savedInstanceState); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View myFragmentView = inflater.inflate(R.layout.list_frag, container, false); TextView tv = (TextView) myFragmentView.findViewById(R.id.textView1); tv.setText("My Header"); setListAdapter(new ArrayAdapter<String>(getActivity(),android.R.layout.simple_list_item_1,names)); return myFragmentView; } @Override public void onListItemClick(ListView l, View v, int position, long id) { // on click display the item in toast Toast.makeText(getActivity(), (String)l.getItemAtPosition(position), Toast.LENGTH_SHORT).show(); } } 

list_frag.xml

 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" > <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" android:text="TextView" /> <ListView android:id="@android:id/list" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@+id/textView1" android:layout_centerHorizontal="true" > </ListView> </RelativeLayout> 

snap shot

enter image description here

Edit: if you want the text to be viewed

 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" > <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" android:layout_marginTop="19dp" android:text="TextView" /> </RelativeLayout> 

Before calling setListAdapter

  View view = inflater.inflate(R.layout.text, null); TextView textinlfated = (TextView) view.findViewById(R.id.textView1); ListView lv = getListView(); textinlfated.setText("TextView scrolls"); lv.addHeaderView(view); 
+7
source

change the getView method of the adapter and put the register in position, and in case 0 return the text in other cases listview.

+1
source

Source: https://habr.com/ru/post/1502015/


All Articles