英文:
After ItemClickListener call methot
问题
我需要在gridView.setOnItemClickListener
的末尾调用createRandomList()
方法,但是当我创建这个gridView
时,imageList
没有更新。
如果我在textTT.setOnClickListener
中调用它,它是有效的。但是我需要在gridView.setOnItemClickListener
之后使其工作。
我的意思是,在gridView.setOnItemClickListener
之后,应该自动再次调用createRandomList()
方法。
public class FragmentTrainingTest extends Fragment {
// ... (其他代码部分未翻译)
@SuppressLint("ClickableViewAccessibility")
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View inflate = inflater.inflate(R.layout.fragment_training_test, container, false);
// ... (其他代码部分未翻译)
gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Log.i("tester", "Item clicked");
if(position == rand){
yesVoice.start();
imageList.set(rand, R.drawable.ic_check_black_24dp);
} else {
noVoice.start();
imageList.set(position, R.drawable.ic_close_black_24dp);
imageList.set(rand, R.drawable.ic_check_black_24dp);
}
gridView.setAdapter(adapter);
// createRandomList(); // 请关注这里
}
});
return inflate;
} //end of onCreateView
private void createRandomList() {
ArrayList<Integer> randomNumber = new ArrayList<>();
// if (ilkKez) {} else try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}
for (int i = 0; randomList.size() > 0; i++) randomList.remove(0);
for (int i = 0; imageList.size() > 0; i++) imageList.remove(0);
for (int i = 0; i < 6; i++) {
do {
rand = r.nextInt(kelimeList.size());
}
while(randomNumber.contains(rand));
randomNumber.add(rand);
randomList.add(kelimeList.get(rand));
imageList.add(R.drawable.ic_fingerprint_black_24dp);
}
rand = r.nextInt(5); // 6 sayi belirlendi bu ise esas oglan
textTT.setText(randomList.get(rand).anaDil);
textTT.setBackgroundColor(Color.parseColor("#4CAF50"));
}
@Override
public void onAttach(Activity activity) {
// TODO Auto-generated method stub
super.onAttach(activity);
context = activity;
dbaseHelper db = new dbaseHelper(context);
kelimeList = db.dbList2();
}
}
注意:以上只是你提供的代码的部分翻译,其他部分未翻译。
英文:
I need to call the createRandomList()
method at the end of gridView.setOnItemClickListener
,
but when I make this gridView
, the imageList
doesn't update.
If I call it in textTT.setOnClickListener
it works. But I need it to work after gridView.setOnItemClickListener
.
I mean that after gridView.setOnItemClickListener
, the method createRandomList()
should automatically be called again.
public class FragmentTrainingTest extends Fragment {
Context context;
TextView textTT;
ArrayList<kayitSinifi> kelimeList = new ArrayList<>();
int rand,position;
Random r = new Random();
MediaPlayer noVoice,yesVoice;
ArrayList<kayitSinifi> randomList = new ArrayList<>();
ArrayList<Integer> imageList = new ArrayList<>();
gridAdapter adapter;
boolean ilkKez = true;
@SuppressLint("ClickableViewAccessibility")
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View inflate = inflater.inflate(R.layout.fragment_training_test, container, false);
noVoice = MediaPlayer.create(context,R.raw.glitchinthematrix);
yesVoice= MediaPlayer.create(context,R.raw.fillingyourinbox);
final GridView gridView = inflate.findViewById(R.id.gridView);
textTT= inflate.findViewById(R.id.txtTrainingTest);
createRandomList();ilkKez = false;
adapter = new gridAdapter(context,randomList,imageList);
gridView.setAdapter(adapter);
textTT.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
createRandomList(); gridView.setAdapter(adapter);
}
});
gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Log.i("tester","Item clicked");
if(position == rand){
yesVoice.start();
imageList.set(rand,R.drawable.ic_check_black_24dp);
} else {
noVoice.start();
imageList.set(position,R.drawable.ic_close_black_24dp);
imageList.set(rand,R.drawable.ic_check_black_24dp);
}
gridView.setAdapter(adapter);
// createRandomList(); // please focus here
}
});
return inflate;
} //end of onCreateView
private void createRandomList() {
ArrayList<Integer> randomNumber = new ArrayList<>();
// if (ilkKez) {} else try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}
for (int i=0; randomList.size()>0;i++) randomList.remove(0);
for (int i=0; imageList.size()>0;i++) imageList.remove(0);
for (int i = 0; i< 6; i++) {
do {
rand = r.nextInt(kelimeList.size());
}
while(randomNumber.contains(rand));
randomNumber.add(rand);
randomList.add(kelimeList.get(rand));
imageList.add(R.drawable.ic_fingerprint_black_24dp);
}
rand = r.nextInt(5); // 6 sayi belirlendi bu ise esas oglan
textTT.setText(randomList.get(rand).anaDil);
textTT.setBackgroundColor(Color.parseColor("#4CAF50"));
}
@Override
public void onAttach(Activity activity) {
// TODO Auto-generated method stub
super.onAttach(activity);
context=activity;
dbaseHelper db = new dbaseHelper(context);
kelimeList=db.dbList2();
}
}
答案1
得分: 0
将createRandomList()
放在gridView.setAdapter(adapter);
之前。
gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Log.i("tester","Item clicked");
if(position == rand){
yesVoice.start();
imageList.set(rand,R.drawable.ic_check_black_24dp);
} else {
noVoice.start();
imageList.set(position,R.drawable.ic_close_black_24dp);
imageList.set(rand,R.drawable.ic_check_black_24dp);
}
createRandomList();
gridView.setAdapter(adapter);
}
});
英文:
Place createRandomList()
in front of gridView.setAdapter(adapter);
gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Log.i("tester","Item clicked");
if(position == rand){
yesVoice.start();
imageList.set(rand,R.drawable.ic_check_black_24dp);
} else {
noVoice.start();
imageList.set(position,R.drawable.ic_close_black_24dp);
imageList.set(rand,R.drawable.ic_check_black_24dp);
}
createRandomList();
gridView.setAdapter(adapter);
}
});
专注分享java语言的经验与见解,让所有开发者获益!
评论