【问题标题】:Android ListView with delete button带有删除按钮的 Android ListView
【发布时间】:2010-09-20 10:05:19
【问题描述】:

我正在尝试将列表视图绑定到列表。当我创建一个扩展 ListActivity 的活动并且我的布局文件中有一个文本视图(即活动绑定到活动中的默认列表视图)时,这可以正常工作。但是,我想做的是有一个 ListView 包含一个图像按钮(以进一步执行行的 deeltion)和文本视图来说明被绑定的项目的名称。

谁能指出我如何做到这一点的方向,其中包含:

  • 布局文件
  • 活动类

我玩过,但似乎无法让它工作,只要我将 ListView / image 按钮添加到布局文件,我的代码就会崩溃。我还通过 google 找到了一些示例,但似乎没有一个有效!

【问题讨论】:

    标签: android listview


    【解决方案1】:

    即使不扩展 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() 调用一些函数来确认删除。当然,必须针对列表中的当前位置进行。

    这段代码 sn-p 只是说明,但我希望它对解决您的问题有用。

    【讨论】:

    • 太好了,谢谢,我会在这个前夜尝试。我认为 arrayadapter 位是我缺少的位。我假设使用的默认适配器只有一个填充单个文本视图的适配器?
    • 是的,默认适配器中只有一个文本视图。
    • 很高兴我能提供帮助。问候。
    【解决方案2】:

    【讨论】:

      猜你喜欢
      • 2023-03-16
      • 2013-07-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-23
      • 1970-01-01
      • 1970-01-01
      • 2011-03-03
      相关资源
      最近更新 更多