我是java新手,尝试从一个函数使用sampleTitles
,并在另一个函数中使用。sampleTitles
中的数据是动态的,并且是从改造中提取的
Fragment.java
@BindView(R.id.customCarouselView) CarouselView customCarouselView; //butterknife
double[] sampleVotes = {
8.9,4.2,
};
@Override
public void onCreate (@Nullable Bundle savedInstanceState) {
super.onCreate (savedInstanceState);
connect();
}
private void connect() {
//this array not passed to setViewListener
String[] sampleTitles = {
"Test 1",
"Test 2",
};
customCarouselView.setViewListener(viewListener);
}
// To set custom views
ViewListener viewListener = new ViewListener() {
@Override
public View setViewForPosition(int position) {
View customView = getLayoutInflater().inflate(R.layout.view_custom, null);
TextView labelTextView = customView.findViewById(R.id.labelTextView);
labelTextView.setText(sampleTitles[position]); //want to use sampleTitles here from
connect(); function
return customView;
}
};
使该数组成为全局变量。这样你就可以通过全班来访问它。按以下方式更改代码。此外,我建议您使用ArrayList
,这样您就不需要在初始化时提供数组的大小。如果你遇到任何问题,请告诉我。
@BindView(R.id.customCarouselView) CarouselView customCarouselView; //butterknife
double[] sampleVotes = {
8.9,4.2,
};
List<String> sampleTitles = new ArrayList<String>(); //declare as global variable so you can access it
@Override
public void onCreate (@Nullable Bundle savedInstanceState) {
super.onCreate (savedInstanceState);
connect();
}
private void connect() {
//Do your insert operations in array here
sampleTitles.add("Test 1");
sampleTitles.add("Test 2");
customCarouselView.setViewListener(viewListener);
}
// To set custom views
ViewListener viewListener = new ViewListener() {
@Override
public View setViewForPosition(int position) {
View customView = getLayoutInflater().inflate(R.layout.view_custom, null);
TextView labelTextView = customView.findViewById(R.id.labelTextView);
labelTextView.setText(sampleTitles.get(position)); //you can access your array with this code
return customView;
}
};