如何从布局覆盖视图的方法?

Olu*_*mbi 0 java android overriding view

我想知道如何View从我的代码扩展我的布局中的一个类。我见过不同的例子,我们说例如:

listView = new ListView(this){
   //Override some methods here
 }
Run Code Online (Sandbox Code Playgroud)

现在,如果ListView我的布局中已经有了,但我仍然想覆盖某些内容,该怎么办。例如,我可以ListView从布局内部引用的唯一方法是:

listView = (ListView)findViewById(R.id.mylistView);
Run Code Online (Sandbox Code Playgroud)

所以从这个例子我如何覆盖列表视图的方法。请我只是一个普通的android程序员。请赐教。

Kar*_*uri 6

您要么必须以编程方式构建您的布局(这在大多数情况下都是乏味和烦人的),或者在命名类中继承 ListView 并将其添加到您的布局中。这是第二个选项的样子:

public class MyListView extends ListView {

    public MyListView(Context context) {
        super(context);
    }

    public MyListView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public MyListView(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }

    public MyListView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
        super(context, attrs, defStyleAttr, defStyleRes);
    }

    // override other methods here
}
Run Code Online (Sandbox Code Playgroud)

在您的布局文件中,使用

<com.your.package.MyListView
    android:layout_width="..."
    android:layout_width="..."
    ... />
Run Code Online (Sandbox Code Playgroud)