在同一片段中的另一个函数中使用一个函数的数组



我是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;
}
};

最新更新