Android onListItemClick不工作?

Android onListItemClick不工作?,android,listview,android-arrayadapter,onitemclicklistener,Android,Listview,Android Arrayadapter,Onitemclicklistener,我正在尝试使用自定义适配器设置一个侦听器。我按下按钮时,McClick没有开火 我发现我需要添加一些属性,但仍然不起作用 android:focusableInTouchMode="false" android:clickable="false" android:focusable="false" 活动: public class StudentActivity { private Act

我正在尝试使用自定义适配器设置一个侦听器。我按下按钮时,McClick没有开火

我发现我需要添加一些属性,但仍然不起作用

                android:focusableInTouchMode="false"
                android:clickable="false"
                android:focusable="false"
活动:

public class StudentActivity {

    private Activity mActivity;
    private Student mStudent;

    private TextView mName;
    private Button mMonday;
    private ListView mListView;

    //That will be deleted
    private ArrayList<HashMap<String, String>> list;

    public StudentActivity(Activity activity, Student student) {
        mActivity = activity;
        mStudent = student;

        mName = (TextView) mActivity.findViewById(R.id.name_student);
        mName.setText(mStudent.getFirstName() + " " + mStudent.getLastName());

        mListView = (ListView) mActivity.findViewById(R.id.list_view);

        list = new ArrayList<>();

        int numberOfIntervals = 7;

        List<String> hours = new ArrayList<>();
        hours.add("08:00-10:00");
        hours.add("10:00-12:00");
        hours.add("12:00-14:00");
        hours.add("14:00-16:00");
        hours.add("16:00-18:00");
        hours.add("18:00-20:00");
        hours.add("20:00-22:00");

        for (int i = 0; i < numberOfIntervals; i++) {
            HashMap<String, String> temp = new HashMap<>();
            temp.put("First", hours.get(i));
            temp.put("Second", "");
            list.add(temp);
        }

        ListViewAdapter adapter = new ListViewAdapter(mActivity, list);
        mListView.setAdapter(adapter);

        addListenerForMondayButton(adapter);
        addListenerForListViewItem(mListView);
    }

    private void addListenerForMondayButton(final ListViewAdapter adapter) {
        mMonday = (Button) mActivity.findViewById(R.id.name_monday);

        mMonday.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                ReservationTask reservationTask = new ReservationTask();
                reservationTask.populateList(adapter);
            }
        });
    }

    private void addListenerForListViewItem(ListView view) {
        view.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                addNotification();
            }
        });
    }

    private void addNotification() {
        NotificationCompat.Builder builder =
                new NotificationCompat.Builder(mActivity.getApplicationContext())
                        .setSmallIcon(R.drawable.arrow_back)
                        .setContentTitle("Notification")
                        .setContentText("This is a test notification");

        Intent notificationIntent = new Intent(mActivity.getApplicationContext(), MainActivity.class);
        PendingIntent contentIntent = PendingIntent.getActivity(mActivity.getApplicationContext(), 0,
                notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT);
        builder.setContentIntent(contentIntent);

        NotificationManager manager = (NotificationManager) mActivity.getSystemService(Context.NOTIFICATION_SERVICE);
        manager.notify(0, builder.build());
    }
公共课堂学生活动{
私人活动能力;
私立学生;
私有文本视图mName;
私人按钮日;
私有列表视图;
//这将被删除
私有数组列表;
公共学生活动(活动,学生){
活动性=活动性;
mStudent=学生;
mName=(TextView)mActivity.findviewbyd(R.id.name\u student);
mName.setText(mStudent.getFirstName()+“”+mStudent.getLastName());
mListView=(ListView)mActivity.findViewById(R.id.list\u视图);
列表=新的ArrayList();
int numberofinterval=7;
列表小时数=新建ArrayList();
加上(“08:00-10:00”);
加上(“10:00-12:00”);
加上(“12:00-14:00”);
加上(14:00-16:00);
加上(16:00-18:00);
加上(“18:00-20:00”);
加上(“20:00-22:00”);
对于(int i=0;i
适配器:

public class ListViewAdapter extends BaseAdapter {

    private ArrayList<HashMap<String, String>> mList;
    private List<Reservation> mReservationList;
    Activity mActivity;
    TextView mHour;
    TextView mName;

    public ListViewAdapter(Activity activity, ArrayList<HashMap<String, String>> list) {
        super();
        mActivity = activity;
        mList = list;
    }

    @Override
    public int getCount() {
        return mList.size();
    }

    @Override
    public Object getItem(int position) {
        return mList.get(position);
    }

    @Override
    public long getItemId(int position) {
        return 0;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {

        LayoutInflater inflater = mActivity.getLayoutInflater();

        convertView=inflater.inflate(R.layout.list_view_item, null);

        mHour = (TextView) convertView.findViewById(R.id.list_item_hour);
        mName = (TextView) convertView.findViewById(R.id.list_item_name);

        HashMap<String, String> map = mList.get(position);

        mHour.setText(map.get("First"));
        boolean set = false;
        if (mReservationList != null && mReservationList.size() > 0) {
            for (Reservation reservation: mReservationList) {
                String createInterval = reservation.getStartHour() + "-" + reservation.getEndHour();
                if (createInterval.equals(parseTime(mHour.getText().toString()))) {
                    mName.setText("Dima");
                    set = true;
                }
            }
            if (set == false) {
                mName.setText(map.get("Second"));
            }
        } else {
            mName.setText(map.get("Second"));
        }

        return convertView;
    }

    public void populateNameReservation(List<Reservation> reservations) {
        mReservationList = reservations;
        notifyDataSetChanged();
    }

    private String parseTime(String intervalTime) {
        String startHour = intervalTime.substring(0, intervalTime.indexOf("-"));
        String endHour = intervalTime.substring(intervalTime.indexOf("-") + 1, intervalTime.length());
        Time startHourTime = Time.valueOf(startHour + ":00");
        Time endHourTime = Time.valueOf(endHour + ":00");

        return startHourTime + "-" + endHourTime;
    }
公共类ListViewAdapter扩展了BaseAdapter{
私有数组列表;
私有列表mReservationList;
活动能力;
文本视图mHour;
文本视图mName;
公共ListViewAdapter(活动,ArrayList列表){
超级();
活动性=活动性;
mList=列表;
}
@凌驾
public int getCount(){
返回mList.size();
}
@凌驾
公共对象getItem(int位置){
返回mList.get(位置);
}
@凌驾
公共长getItemId(int位置){
返回0;
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
LayoutInflater充气机=mActivity.getLayoutInflater();
convertView=充气机。充气(R.layout.list\u view\u项,空);
mHour=(TextView)convertView.findViewById(R.id.list\u item\u hour);
mName=(TextView)convertView.findViewById(R.id.list\u item\u name);
HashMap map=mList.get(位置);
mHour.setText(map.get(“First”);
布尔集=假;
if(mReservationList!=null&&mReservationList.size()>0){
对于(预订:mReservationList){
字符串createInterval=reservation.getStartHour()+“-”+reservation.getEndHour();
if(createInterval.equals(parseTime(mHour.getText().toString())){
mName.setText(“Dima”);
设置=真;
}
}
if(set==false){
mName.setText(map.get(“第二”);
}
}否则{
mName.setText(map.get(“第二”);
}
返回视图;
}
公共无效populateNameReservation(列出保留){
mReservationList=预订;
notifyDataSetChanged();
}
私有字符串解析时间(字符串间隔时间){
String startHour=intervalTime.substring(0,intervalTime.indexOf(“-”);
字符串endHour=intervalTime.substring(intervalTime.indexOf(“-”)+1,intervalTime.length());
Time startHourTime=Time.valueOf(startHour+“:00”);
Time endHourTime=Time.valueOf(endHour+“:00”);
返回startHourTime+“-”+endHourTime;
}
列表视图的XML布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent">
            <LinearLayout
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:orientation="vertical">
                <TextView
                    android:layout_width="match_parent"
                    android:layout_height="50dp"
                    android:gravity="center"
                    android:text="Text View"
                    android:id="@+id/list_item_hour"
                    android:focusableInTouchMode="false"
                    android:clickable="false"
                    android:focusable="false"/>
            </LinearLayout>

            <LinearLayout
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1">
                <TextView
                    android:layout_width="match_parent"
                    android:layout_height="50dp"
                    android:gravity="center"
                    android:text="Text View"
                    android:id="@+id/list_item_name"
                    android:focusableInTouchMode="false"
                    android:clickable="false"
                    android:focusable="false"/>
            </LinearLayout>
        </LinearLayout>
    </ScrollView>
</LinearLayout>


谢谢!!

试试这个示例代码,我使用了一个带有自定义类的列表视图来在列表视图中膨胀数据,然后单击列表项,使用intent重定向到另一个活动

检查这是工作代码

   protected void onPostExecute(Void result) {
            super.onPostExecute(result);

            CustomList customList = new CustomList(TrainingProgrammes.this, listProgrms, reference_IDs, programStatus, _tierLevel, _tierIndexValue, programIDS);

            listView = (ListView) findViewById(R.id.listView);
            listView.setAdapter(customList);
            listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                @Override
                public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {


                    if (programStatus.get(i).equals("Subscribed")) {

                        System.out.println("Program id is trianing programme new : " + programIDS.get(i) + " CLIENT_ID " + _clientID);


                        Intent nextScreen2 = new Intent(getApplicationContext(), TaskList.class);
                        nextScreen2.putExtra("EMAIL_ID", _loginID);
                        nextScreen2.putExtra("PROGRAMME_ID", programIDS.get(i));
                        nextScreen2.putExtra("CLIENT_ID", _clientID);
                        // nextScreen2.putExtra("PROGRAMME_STATUS", programStatus.get(i));
                        startActivity(nextScreen2);

                    }
                }
            });
        }
受保护的void onPostExecute(void结果){
super.onPostExecute(结果);
自定义列表自定义列表=