如何在Java中从自定义视图获取ArrayList
我有一个Java类Class1,它扩展了视图,如下所示:如何在Java中从自定义视图获取ArrayList,java,android,arraylist,view,nullpointerexception,Java,Android,Arraylist,View,Nullpointerexception,我有一个Java类Class1,它扩展了视图,如下所示: public class Class1 extends View { private ArrayList<SomeClass> list; public Class1(Context context,AttributeSet attrs) { super(context,attrs); list=new ArrayList<>(); } @Override
public class Class1 extends View
{ private ArrayList<SomeClass> list;
public Class1(Context context,AttributeSet attrs)
{ super(context,attrs);
list=new ArrayList<>();
}
@Override
protected void onDraw(Canvas canvas)
{ canvas.drawSomething();
}
void FunctiontoaddelementstoArrayList()
{ list.add(SomeClass);
}
public ArrayList<SomeClass> getList()
{ return this.list;
}
}
}
但是,它在
mylist.getList()处抛出一个NullPointerException
代码>行,如何从自定义视图类中获取ArrayList?在代码段中发布活动的onCreate mylist未初始化。你是说myview吗?我已经编辑了这个问题。我已经确认我的ArrayList在class1中不是空的。在布局成功膨胀之前,你可能正在调用findViewById,但从你发布的代码片段中无法判断
<com.example.Class1
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/myview"
android:layout_width="fill_parent"
android:layout_height="0dp"
android:layout_marginBottom="3dp"
android:layout_marginLeft="5dp"
android:layout_marginRight="5dp"
android:layout_marginTop="3dp"
android:layout_weight="1"
android:background="#FFFFFFFF" />
public class MainActivity extends AppCompatActivity
{ private Class1 class1;
private Button fetch;
private ArrayList<SomeClass> mylist;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
class1=(Class1)findViewById(R.id.myview);
fetch=(Button)findViewById(R.id.fetch);
fetch.setOnClickListener(new View.OnClickListener()
{ @Override
public void onClick(View v)
{ try
{ mylist = class1.getList();
SomeClass S = mylist.get(0);
Log.v("Got", S.getSomeThing());
}
catch(NullPointerException e)
{ e.printStackTrace();
}
}
});