即使您没有扩展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