在ItemClickListener调用方法之后

huangapple 未分类评论48阅读模式
英文:

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&lt;kayitSinifi&gt; kelimeList = new ArrayList&lt;&gt;();
    int rand,position;
    Random r = new Random();
    MediaPlayer noVoice,yesVoice;
    ArrayList&lt;kayitSinifi&gt; randomList = new ArrayList&lt;&gt;();
    ArrayList&lt;Integer&gt; imageList = new ArrayList&lt;&gt;();
    gridAdapter adapter;
    boolean ilkKez = true;
    
    @SuppressLint(&quot;ClickableViewAccessibility&quot;)
    @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&lt;?&gt; parent, View view, int position, long id) {
                Log.i(&quot;tester&quot;,&quot;Item clicked&quot;);
                 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&lt;Integer&gt; randomNumber = new ArrayList&lt;&gt;();
          // if (ilkKez) {} else try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}
        for (int i=0; randomList.size()&gt;0;i++) randomList.remove(0);
        for (int i=0; imageList.size()&gt;0;i++) imageList.remove(0);
        for (int i = 0; i&lt; 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(&quot;#4CAF50&quot;));
    }

    @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&lt;?&gt; parent, View view, int position, long id) {
            Log.i(&quot;tester&quot;,&quot;Item clicked&quot;);
             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);
      }
    });

huangapple
  • 本文由 发表于 2020年5月29日 08:24:55
  • 转载请务必保留本文链接:https://java.coder-hub.com/62076682.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定