无法在ListFragment上设置自定义列表视图

时间:2014-01-27 06:36:30

标签: android android-layout android-listview android-fragments android-listfragment

我正在尝试在ListFragment上设置自定义Listview布局,我一直在重新研究,我仍然无法让它工作。我是android的新编程,所以我非常感谢你的帮助。

这是我的listFragment类

public class ListCins  extends ListFragment {
public static ArrayList<Cin> cins;
private ListView listView;
private pListAdapter mAdapter;

public static ListCins newInstance() {
ListCins f = new ListCins();
return f;
}

@Override
public void onActivityCreated(Bundle savedInstanceState) { 
super.onActivityCreated(savedInstanceState);
//Los fragments soportan presentar un msj cuando la lista esta vacia.
setEmptyText("Nothing yet, but working");    

}


@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);




cins = new ArrayList<Cin>();
cins.add(new Cin("Agenter", 1));
cins.add(new Cin("Ora", 2));
cins.add(new Cin("Vistia", 2));
cins.add(new Cin("Bluel", 2));


mAdapter = new pListAdapter(this.getActivity(), cins);
setListAdapter(mAdapter);


}



@Override
public void onViewCreated(View view, Bundle savedInstanceState) {


super.onViewCreated(view, savedInstanceState);      
setEmptyText("Nothing yet 2, but working");
registerForContextMenu(getListView());

setHasOptionsMenu(true);
}






@Override
public void onListItemClick(ListView l, View v, int position, long id) {
super.onListItemClick(l, v, position, id);

Toast mTosat = Toast.makeText(this.getActivity(),"clicked:"+String.valueOf(position)+" "+cins.get(position).nombre , 200);
mTosat.show();


}



}

这是我想要应用于listfragment的list_fragment.xml。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"


android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:paddingLeft="10dp"
android:paddingRight="10dp">


<ListView
android:id="@id/android:list"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:drawSelectorOnTop="false" />


<TextView
android:id="@android:id/empty"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="No data"        />
</LinearLayout>  

我也有自定义的arrayAdapter,但我不知道它是否与自定义列表视图布局有关。

提前致谢...

2 个答案:

答案 0 :(得分:3)

您需要覆盖onCreateView并充气/返回自定义布局。 ListFragment应该为您处理其余的事情。这在http://developer.android.com/reference/android/app/ListFragment.html

的屏幕布局部分进行了描述

答案 1 :(得分:3)

感谢NasaGeek,我试图像他们说的那样夸大它,就像这样:

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

但它不能正常工作,然后我发现了问题。出于某种原因,这种方法让代码变得疯狂。

setEmptyText("Nothing yet, but working");   

如果你能解释我为什么,它会很棒。

感谢。