java - 为什么在此 fragment 中未到达我的 onClick 方法

标签 java android android-fragments

我正在尝试在 Android 的 fragment 中创建 ListView 。我已成功使用俱乐部数组填充 ListView ,但当我单击列表时,我的方法 OnClick 永远不会到达。我希望看到弹出一个带有行号的 toast 。

请参阅下面的代码:

import android.app.AlertDialog;
import android.app.Dialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
import android.widget.Toast;

/**
 * club selection java Class
 */



public class ClubsFragment extends Fragment implements View.OnClickListener {

    String[] mClubArray;
    ListView MyList;


    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {


        //returning our layout file
        //change R.layout.yourlayoutfilename for each of your fragments

        View view = inflater.inflate(R.layout.fragment_clubs, container, false);

        mClubArray = getResources().getStringArray(R.array.club_array);

        ArrayAdapter<String> itemsAdapter =
                new ArrayAdapter<String>(getContext(), R.layout.list_item_style, mClubArray);

        MyList = (ListView) view.findViewById(R.id.ClubList);
        MyList.setAdapter(itemsAdapter);

        return view;

    }


    @Override
    public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);
        //you can set the title for your toolbar here for different fragments different titles
        getActivity().setTitle("Clubs");

    }



    @Override
    public void onClick(View view) {

        MyList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view,
                                    int position, long id)
            {

                Toast.makeText(getContext(),
                        "Click ListItem Number " + position, Toast.LENGTH_LONG)
                        .show();


            }
        });


    }





}

最佳答案

在你的onCreateView()中:

使用OnItemClickListener

设置适配器后

  MyList.setOnItemClickListener(new OnItemClickListener()
   {
      @Override
      public void onItemClick(AdapterView<?> adapter, View v, int position,
            long arg3) 
      {
            String value = (String)adapter.getItemAtPosition(position); 
             Toast.makeText(this,value,Toast.LENGTH_SHORT).show();
             list.remove(position); 
             adapter.notifyDataSetChanged();
            // do what you intend to do on click of listview row
      }
   });

删除项目:

ArrayList<String> list =new ArrayList<String>(Arrays.asList(mClubArray)); //declare globally so that u can access it 
ArrayAdapter<String> adapter = new ArrayAdapter<String>(getContext(), android.R.layout.simple_list_item_1, list);

 MyList.setAdapter(adapter);
    MyList.setOnItemClickListener(new android.widget.AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            Toast.makeText(getActivity(), "You selected : " + item, Toast.LENGTH_SHORT).show();
            String item = list.get(position);
            list.remove(position);
            adapter.notifyDataSetChanged();

        }
    });

关于java - 为什么在此 fragment 中未到达我的 onClick 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42325624/

相关文章:

java - 如何为 JMX 连接器设置请求超时

java 将 List<String> 转换为 List<T> 的方法,其中 T 可以是 Integer 或 Long

android - 找不到support-annotations.jar

android - Android中数组适配器和游标适配器的区别

java - JAVA中通过列号而不是列名从mysql数据库获取数据?

java - Android 编程错误

Android 外部应用程序安装(在 SD 卡上),通过接收器重新加载 alarmmanager 警报

android - 从 fragment 中的相机拍照

android - Fragment.onCreateView 有空容器

android - 如何在旋转屏幕后关闭 dialogfragment