use*_*802 4 android textview android-fragments android-listfragment
如何在片段顶部添加textview.我使用以下适配器填充listfragment,xml文件是列表片段中的每一行.我需要在listview上添加一个textview,它必须与列表一起滚动吗?
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;
}
}
Run Code Online (Sandbox Code Playgroud)
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>
Run Code Online (Sandbox Code Playgroud)
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
}
}
}
Run Code Online (Sandbox Code Playgroud)
以下代码在AsyncTask类中用于填充列表片段
Adapter adapter = new Adapter(context, storage);
listFragment.setListAdapter(adapter);
Run Code Online (Sandbox Code Playgroud)
您可以执行以下操作或将textview作为标题添加到您的listivew
引用文档
ListActivity(ListFragment类似)具有默认布局,该布局由屏幕中心的单个全屏列表组成.但是,如果您愿意,可以通过使用id为"@android:id/list"的setContentView() onCreate(). To do this, your own view MUST contain aListView`对象设置您自己的视图布局来自定义屏幕布局(或者如果它在代码中则列出)
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>
Run Code Online (Sandbox Code Playgroud)
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();
}
}
Run Code Online (Sandbox Code Playgroud)
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>
Run Code Online (Sandbox Code Playgroud)
快照

编辑:如果您想要滚动textview
<?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>
Run Code Online (Sandbox Code Playgroud)
在调用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);
Run Code Online (Sandbox Code Playgroud)