即使您沒有擴展ListActivity,也可以通過擴展Activity來獲得List功能。爲了達到這個目的,你需要帶有明確命名的ListView元素的佈局文件,如下圖所示。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout android:layout_width="fill_parent"
android:layout_height="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/Details_RelativeLayout01">
<ImageView android:layout_centerHorizontal="true"
android:layout_alignParentTop="true" android:id="@+id/Details_ImageView01"
android:layout_marginTop="10dip" android:layout_width="60dip"
android:layout_height="60dip"></ImageView>
<ListView android:layout_width="fill_parent"
android:drawSelectorOnTop="false" android:clipChildren="true"
android:fitsSystemWindows="true" android:layout_height="fill_parent"
android:layout_below="@+id/Details_ImageView01" android:id="@+id/Details_ListView01">
</ListView>
</RelativeLayout>
這裏我有一些圖像下面的結果列表。在你的Activity類中,你必須擴展ArrayAdapter。另外,您需要定義一個列表行的外觀。在下面的例子中,它在R.layout.one_result_details_row
中完成。
public class ListOfDetails extends Activity {
private DetailsListAdapter mDetailsListAdapter;
private Vector<String> mDetailsTimeStringsList;
private Vector<String> mDetailsDateStringsList;
private ListView mDetailsListView;
private int mSelectedPosition;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
super.setContentView(R.layout.detailed_results_list);
ListView mDetailsListView = (ListView) findViewById(R.id.Details_ListView01);
ImageView mSelectedPuzzleIcon = (ImageView) findViewById(R.id.Details_ImageView01);
mDetailsListAdapter = new DetailsListAdapter();
mDetailsListView.setAdapter(mDetailsListAdapter);
mDetailsTimeStringsList = new Vector<String>();
mDetailsDateStringsList = new Vector<String>();
updateTheList();
}
class DetailsListAdapter extends ArrayAdapter<String> {
DetailsListAdapter() {
super(ListOfDetails.this, R.layout.one_result_details_row);
}
@Override
public View getView(int position, View convertView, ViewGroup parent)
{
View row = null;
LayoutInflater inflater = getLayoutInflater();
row = inflater.inflate(R.layout.one_result_details_row, parent, false);
TextView result = (TextView) row.findViewById(R.id.Details_Row_TextView01);
TextView date = (TextView) row.findViewById(R.id.Details_Row_TextView02);
Button deleteButton = (Button) row.findViewById(R.id.Details_Button01);
deleteButton.setOnClickListener(
new Button.OnClickListener() {
@Override
public void onClick(View v) {
confirmDelete();
}
}
);
return(row);
}
}
}
刪除按鈕onClickListener()調用某個函數來確認刪除。當然,它必須根據列表中的當前位置來完成。
此代碼片段只是示例,但我希望它可以解決您的問題。
優秀的,謝謝,我會盡力,這前夜。我認爲arrayadapter位是我失蹤的位。我認爲只使用默認適配器的適配器可以填充單個文本視圖? – januszstabik 2010-09-20 12:09:59
是的,只有默認適配器中的單個文本視圖。 – Zelimir 2010-09-20 14:56:34
夢幻般的答案,非常感謝你的所有細節:) – HXCaine 2011-01-03 15:34:35