我是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;
}
};发布于 2021-04-19 16:20:34
使该数组成为全局变量。所以你可以通过整个类来访问它。如下所示更改您的代码。另外,我建议你改用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;
}
};https://stackoverflow.com/questions/67158238
复制相似问题