-1

我遇到了其中一些回答了这个问题的问题,但并没有在我发现可扩展的问题中完全构建类,很多时候它会覆盖函数,特别是当我使用的是处理数据填充的SimpleCursorAdaptera 而不是 a时自动进入列表项。BaseAdapterSQLitegetView

我的答案中提供的代码是为了向您展示如何开发一个ListAdapter可以添加可以处理点击事件的按钮的方式,而不启用列表项上的点击事件或完全覆盖您扩展的类的原始绘制事件。

4

1 回答 1

0

首先,您的行的 XML,如果您要对其进行任何更改,只需在代码中更新 4 按钮的 ID,自定义部分不需要其余的:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_height="wrap_content" android:id="@+id/tag_row_layout"
     android:orientation="horizontal" android:layout_width="wrap_content">

     <TextView android:layout_width="wrap_content"
          android:layout_height="fill_parent" android:id="@+id/name"
          />
     <Button
          android:id="@+id/delete_button"
          android:layout_width="wrap_content" 
          android:layout_height="fill_parent" 
          android:text="Do Stuff"
          />
</LinearLayout>

这是一个非常简单的列表视图,使用 LinearLayout 它只会在文本旁边显示按钮,这没什么了不起的。

下一部分是像这样拥有适配器的代码......

public class CustomListAdapter extends SimpleCursorAdapter {

    public CustomListAdapter(Context context, int layout, Cursor c, String[] from, int[] to) {
        super(context, layout, c, from, to);
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        convertView = super.getView(position, convertView, parent);

        Button btn = (Button)convertView.findViewById(R.id.delete_button);
        btn.setOnClickListener(new DeleteButton());

        return convertView;
    }

    protected final static class DeleteButton implements OnClickListener {
        public void onClick(View v) {
            Log.e("TestButton", "It's been fired!!!");
        }
    }
}

然后,您可以将其扩展到多个按钮,但在列表项中创建更多按钮XML,然后static classCustomListAdapter. 这对于扩展非常有用,SimpleCursorAdapter因为它仍然会将正确的数据注入到正确的文本视图中。

于 2012-12-26T12:46:51.040 回答