我正在尝试为列表中的项目使用自定义文本视图,但在部署我的应用时,它不会出现。
片段类
public class FragmentMainList extends android.support.v4.app.Fragment {
ListView list_main;
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){
View v = inflater.inflate(R.layout.fragment_main_list, container, false);
String[] listContent = {
getActivity().getResources().getString(R.string.item_0),
getActivity().getResources().getString(R.string.item_1),
getActivity().getResources().getString(R.string.item_2)
};
list_main = (ListView)v.findViewById(R.id.list_main);
ArrayAdapter adapter = new ArrayAdapter(getActivity(),R.layout.list_item,listContent);
list_main.setAdapter(adapter);
return v;
}
}
list_item.xml
<?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="match_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/list_item"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="12dp"
android:textAppearance="?android:attr/textAppearanceLarge" />
</LinearLayout>
我知道下面的内容与它有关,但我不知道该改为:
ArrayAdapter adapter = new ArrayAdapter(getActivity(),R.layout.list_item,listContent); list_main.setAdapter(适配器);
答案 0 :(得分:2)
您需要将TextView
的ID作为参数添加到ArrayAdapter
构造函数调用中,例如new ArrayAdapter(getActivity(), R.layout.list_item, R.id.list_item, listContent)
。
答案 1 :(得分:1)
马丁的答案应该奏效。但是,如果您从布局文件中删除了父LinearLayout
并使TextView
成为文件中唯一的View/ViewGroup
,那么它应该可以正常工作。这将是最好的&#34;如果它总是只包含TextView
。如果您以后可能想要添加其他Views
,那么Martin的回答可能会更好&#34;。
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/list_item"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="12dp"
android:textAppearance="?android:attr/textAppearanceLarge" />
这将是文档中的这个构造函数
http://developer.android.com/reference/android/widget/ArrayAdapter.html#ArrayAdapter(android.content.Context,int,java.util.List)