我是新來的android api,我有一些問題..基礎知識。 我試圖獲取列表的工作,但該列表顯示了錯誤的文字:ListFragment顯示錯誤的項目
每行有兩個TextViews(標題,副標題),繼承人的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="wrap_content"
android:orientation="horizontal"
android:padding="5dip" >
<TextView
android:id="@+id/row_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="TITLE"
android:textSize="15dip"
android:layout_gravity="center_vertical" />
<TextView
android:id="@+id/row_subtitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/row_title"
android:text="SUBTITLE"
android:textSize="10dip"
android:layout_gravity="center_vertical" />
</RelativeLayout>
我延長ListFragment(我需要這個片段的東西,因爲slidingMenu庫),有一個自定義適配器和一個項目類。 在onActivityCreated()方法,我想補充一些隨機的物品到適配器:
package com.slidingmenu.example;
import android.app.Fragment;
import android.app.ListFragment;
import android.content.Context;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.TextView;
public class SampleListFragment extends ListFragment {
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
return inflater.inflate(R.layout.list, null);
}
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
SampleAdapter adapter = new SampleAdapter(getActivity());
for (int i = 0; i < 20; i++) {
adapter.add(new SampleItem(new Fragment(), "title no. " + i, "some subtitle"));
}
setListAdapter(adapter);
}
private class SampleItem {
public Fragment frag;
public String title;
public String subTitle;
public SampleItem(Fragment frag, String title, String subTitle) {
this.frag = frag;
this.title = title;
this.subTitle = subTitle;
}
}
public class SampleAdapter extends ArrayAdapter<SampleItem> {
public SampleAdapter(Context context) {
super(context, 0);
}
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = LayoutInflater.from(getContext()).inflate(R.layout.row, null);
}
TextView title = (TextView) convertView.findViewById(R.id.row_title);
TextView subTitle = (TextView) convertView.findViewById(R.id.row_subtitle);
return convertView;
}
}
}
所以我thougt該列表會顯示這樣的事情:
title no. 0
some subtitle
-
title no. 1
some subtitle
-
title no. 2
some subtitle
-
etc.
而是它只是顯示我定義了什麼在row.xml:
TITLE
SUBTITLE
-
TITLE
SUBTITLE
-
etc.
我認爲getView()需要改變(至少它不會作出太大的意義對我來說),但我不知道。 我所嘗試的一切都會導致一些空指針異常或更糟。
請問有人能告訴我我需要改變什麼嗎?
好吧,你永遠不會調用textview.settext(sampleitem.title) –