我正在尝试将列表视图绑定到List。当我创建一个扩展ListActivity的活动并且我的布局文件中有一个文本视图(即活动绑定到活动中的默认列表视图)时,这可以正常工作。但是,我想要做的是有一个ListView,它包含一个图像按钮(进一步执行行的deeltion)和文本视图,以说明被绑定项目的名称。
任何人都可以向我指出如何做到这一点的方向:
我已经玩过了,似乎不能让它工作,只要我将ListView /图像按钮添加到布局文件中,我的代码崩溃了。我也通过谷歌找到了一些例子,但似乎都没有用!
答案 0 :(得分:11)
即使您不扩展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()调用一些函数来确认删除。当然,必须针对列表中的当前位置进行操作。
此代码段只是插图,但我希望它可以帮助您解决问题。
答案 1 :(得分:3)