SetOnClickListener在DialogFragment中不起作用。

huangapple go评论110阅读模式
英文:

SetOnClickListener doesn't work in DialogFragment

问题

以下是您要翻译的内容:

我正在尝试在 DialogFragment 内部的 ListView 中单击时获取索引,但是我什么都没有得到... 我不知道为什么...

这是我在其中使用 setOnClickListener 的 OnCreatedDialog

这是我的适配器,我正在尝试在这里设置 setOnClickListener:

  1. public class AdapterListviewChangeStartingKarateka extends ArrayAdapter {
  2. Context context;
  3. int item_Layaut;
  4. ArrayList<Karateka> data;
  5. ApiUtils apiUtils;
  6. public AdapterListviewChangeStartingKarateka(Context context, int item_Layaut, ArrayList<Karateka> data) {
  7. super(context, item_Layaut,data);
  8. this.context = context;
  9. this.item_Layaut = item_Layaut;
  10. this.data = data;
  11. }
  12. @NonNull
  13. @Override
  14. public View getView(final int position, @Nullable View convertView, @NonNull ViewGroup parent) {
  15. if (convertView == null) {
  16. LayoutInflater layoutInflater = LayoutInflater.from(context);
  17. convertView = layoutInflater.inflate(item_Layaut, parent, false);
  18. }
  19. String image = data.get(position).getPhoto_karateka();
  20. ImageView elementImage = convertView.findViewById(R.id.change_starting_picture_karateka);
  21. if(image!= null || !image.isEmpty() ) {
  22. Picasso.get().load(apiUtils.BASE_URL_PICTURE + image).fit().into(elementImage);
  23. } else {
  24. elementImage.setImageResource(R.drawable.default_image);
  25. }
  26. Button buttonToChange= convertView.findViewById(R.id.item_button_to_change);
  27. ListView list = convertView.findViewById(R.id.starting_listview);
  28. list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
  29. @Override
  30. public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
  31. Log.d("indexListview", String.valueOf(i));
  32. }
  33. });
  34. }
  35. }
英文:

I am trying to get the index when I click in the listview inside the DialogFragment, but I don't get anything... I don't know why...

This is the OnCreatedDialog where I have the setOnClickListener:

This is my Adapter, I am trying to put the setOnClickListener here:

  1. public class AdapterListviewChangeStartingKarateka extends ArrayAdapter {
  2. Context context;
  3. int item_Layaut;
  4. ArrayList&lt;Karateka&gt; data;
  5. ApiUtils apiUtils;
  6. public AdapterListviewChangeStartingKarateka(Context context, int item_Layaut, ArrayList&lt;Karateka&gt; data) {
  7. super(context, item_Layaut,data);
  8. this.context = context;
  9. this.item_Layaut = item_Layaut;
  10. this.data = data;
  11. }
  12. @NonNull
  13. @Override
  14. public View getView(final int position, @Nullable View convertView, @NonNull ViewGroup parent) {
  15. if (convertView == null) {
  16. LayoutInflater layoutInflater = LayoutInflater.from(context);
  17. convertView = layoutInflater.inflate(item_Layaut, parent, false);
  18. }
  19. String image = data.get(position).getPhoto_karateka();
  20. ImageView elementImage = convertView.findViewById(R.id.change_starting_picture_karateka);
  21. if(image!= null || !!!image.isEmpty() ) {
  22. Picasso.get().load(apiUtils.BASE_URL_PICTURE + image).fit().into(elementImage);
  23. }else{ elementImage.setImageResource(R.drawable.default_image); }
  24. Button buttonToChange= convertView.findViewById(R.id.item_button_to_change);
  25. ListView list = convertView.findViewById(R.id.starting_listview);
  26. list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
  27. @Override
  28. public void onItemClick(AdapterView&lt;?&gt; adapterView, View view, int i, long l) {
  29. Log.d(&quot;indexListview&quot;, String.valueOf(i));
  30. }
  31. });
  32. }

答案1

得分: 0

尝试实现一个ListView适配器,并在适配器的getView()方法中定义您的监听器。

您应该为每个视图元素设置监听器。

  1. viewKarateka.setOnClickListener(new View.OnClickListener() {
  2. public void onClick(final View v) {
  3. Log.d("indexListview", String.valueOf(i));
  4. }
  5. });
英文:

Try to implement an ListView adapter and define your listener in adapter's getView() method.

You should set listener for each view element.

  1. viewKarateka.setOnClickListener(new View.OnClickListener() {
  2. public void onClick(final View v) {
  3. Log.d(&quot;indexListview&quot;, String.valueOf(i));
  4. }
  5. }

huangapple
  • 本文由 发表于 2020年5月5日 02:58:54
  • 转载请务必保留本文链接:https://go.coder-hub.com/61599620.html
匿名

发表评论

匿名网友

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

确定