首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >未执行ListView onItemClick()

未执行ListView onItemClick()
EN

Stack Overflow用户
提问于 2019-11-19 21:30:27
回答 1查看 43关注 0票数 0

我有一个MainScreen,它会在listView中显示一些计时器。我的问题是,我不能打开一个单独的计时器,并且onClick事件永远不会执行。我的onClickEvent中的代码可以工作,我已经测试过了。

这是我的MainActivity:

代码语言:javascript
复制
public class MainActivity extends AppCompatActivity {
    ListView listView;
    List<Timer> al;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Timer timer1 = new Timer("06:30", true, true, true, true, true, false, false);
        Timer timer2 = new Timer("09:30", true, true, true, true, true, true, true);
        Timer timer3 = new Timer("04:30", false, false, true, true, true, false, false);
        Timer timer4 = new Timer("10:30", true, true, false, true, true, true, false);
        Timer timer5 = new Timer("06:30", true, true, true, true, true, false, false);
        Timer timer6 = new Timer("09:30", true, true, true, true, true, true, true);
        Timer timer7 = new Timer("04:30", false, false, true, true, true, false, false);
        Timer timer8 = new Timer("10:30", true, true, false, true, true, true, false);

        al = new ArrayList<>();
        al.add(timer1);
        al.add(timer2);
        al.add(timer3);
        al.add(timer4);
        al.add(timer5);
        al.add(timer6);
        al.add(timer7);
        al.add(timer8);

        listView = findViewById(R.id.list_view_timer);
        TimerAdapter adapter = new TimerAdapter(listView.getContext(), al);
        listView.setAdapter(adapter);

        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                Intent detailIntent = new Intent(MainActivity.this, EditTimerActivity.class);
                detailIntent.putExtra("timer", al.get(position));
                startActivity(detailIntent);
            }
        });
    }
}

我的Timer类:

代码语言:javascript
复制
public class Timer implements Serializable {
    public String time;
    public boolean wk_Mo;
    public boolean wk_Di;
    public boolean wk_Mi;
    public boolean wk_Do;
    public boolean wk_Fr;
    public boolean wk_Sa;
    public boolean wk_So;
    public boolean on = true;

    public Timer(String time, boolean wk_Mo, boolean wk_Di, boolean wk_Mi, boolean wk_Do, boolean wk_Fr, boolean wk_Sa, boolean wk_So) {
        this.time = time;
        this.wk_Mo = wk_Mo;
        this.wk_Di = wk_Di;
        this.wk_Mi = wk_Mi;
        this.wk_Do = wk_Do;
        this.wk_Fr = wk_Fr;
        this.wk_Sa = wk_Sa;
        this.wk_So = wk_So;
    }

    public String getTime() {
        return time;
    }

    public void setTime(String time) {
        this.time = time;
    }

    public boolean isWk_Mo() {
        return wk_Mo;
    }

    public void setWk_Mo(boolean wk_Mo) {
        this.wk_Mo = wk_Mo;
    }

    public boolean isWk_Di() {
        return wk_Di;
    }

    public void setWk_Di(boolean wk_Di) {
        this.wk_Di = wk_Di;
    }

    public boolean isWk_Mi() {
        return wk_Mi;
    }

    public void setWk_Mi(boolean wk_Mi) {
        this.wk_Mi = wk_Mi;
    }

    public boolean isWk_Do() {
        return wk_Do;
    }

    public void setWk_Do(boolean wk_Do) {
        this.wk_Do = wk_Do;
    }

    public boolean isWk_Fr() {
        return wk_Fr;
    }

    public void setWk_Fr(boolean wk_Fr) {
        this.wk_Fr = wk_Fr;
    }

    public boolean isWk_Sa() {
        return wk_Sa;
    }

    public void setWk_Sa(boolean wk_Sa) {
        this.wk_Sa = wk_Sa;
    }

    public boolean isWk_So() {
        return wk_So;
    }

    public void setWk_So(boolean wk_So) {
        this.wk_So = wk_So;
    }

    public boolean isOn() {
        return on;
    }

    public void setOn(boolean on) {
        this.on = on;
    }
}

我的自定义适配器:

代码语言:javascript
复制
class TimerAdapter extends ArrayAdapter {
    private Context activityContext;
    private List<Timer> list;
    public static final String TAG = "ListView";
    private int accent;
    private int white;

    public TimerAdapter(Context context, List<Timer> list){
        super(context, R.layout.timer_list, list);
        this.activityContext = context;
        this.list = list;
    }


    @Override
    public View getView(final int position, View view, ViewGroup viewGroup){

        final ViewHolder viewHolder;

        if (view == null) {
            view = LayoutInflater.from(activityContext).inflate(R.layout.timer_list, null);
            viewHolder = new ViewHolder();


            viewHolder.timer = view.findViewById(R.id.textViewTime);
            viewHolder.wk1 = view.findViewById(R.id.textWeekday1);
            viewHolder.wk2 = view.findViewById(R.id.textWeekday2);
            viewHolder.wk3 = view.findViewById(R.id.textWeekday3);
            viewHolder.wk4 = view.findViewById(R.id.textWeekday4);
            viewHolder.wk5 = view.findViewById(R.id.textWeekday5);
            viewHolder.wk6 = view.findViewById(R.id.textWeekday6);
            viewHolder.wk7 = view.findViewById(R.id.textWeekday7);
            viewHolder.switch1 = view.findViewById(R.id.switch1);


            viewHolder.timer.setText(list.get(position).getTime());
            if(list.get(position).isWk_Mo()){
                viewHolder.wk1.setTextColor(ContextCompat.getColor(activityContext, R.color.accent));
            }
            else{
                viewHolder.wk1.setTextColor(ContextCompat.getColor(activityContext, R.color.white));
            }
            if(list.get(position).isWk_Di()){
                viewHolder.wk2.setTextColor(ContextCompat.getColor(activityContext, R.color.accent));
            }
            else{
                viewHolder.wk2.setTextColor(ContextCompat.getColor(activityContext, R.color.white));
            }
            if(list.get(position).isWk_Mi()){
                viewHolder.wk3.setTextColor(ContextCompat.getColor(activityContext, R.color.accent));
            }
            else{
                viewHolder.wk3.setTextColor(ContextCompat.getColor(activityContext, R.color.white));
            }
            if(list.get(position).isWk_Do()){
                viewHolder.wk4.setTextColor(ContextCompat.getColor(activityContext, R.color.accent));
            }
            else{
                viewHolder.wk4.setTextColor(ContextCompat.getColor(activityContext, R.color.white));
            }
            if(list.get(position).isWk_Fr()){
                viewHolder.wk5.setTextColor(ContextCompat.getColor(activityContext, R.color.accent));
            }
            else{
                viewHolder.wk5.setTextColor(ContextCompat.getColor(activityContext, R.color.white));
            }
            if(list.get(position).isWk_Sa()){
                viewHolder.wk6.setTextColor(ContextCompat.getColor(activityContext, R.color.accent));
            }
            else{
                viewHolder.wk6.setTextColor(ContextCompat.getColor(activityContext, R.color.white));
            }
            if(list.get(position).isWk_So()){
                viewHolder.wk7.setTextColor(ContextCompat.getColor(activityContext, R.color.accent));
            }
            else{
                viewHolder.wk7.setTextColor(ContextCompat.getColor(activityContext, R.color.white));
            }
            if(list.get(position).isOn()){
                viewHolder.switch1.setChecked(true);
            }
            else{
                viewHolder.switch1.setChecked(false);
            }

            view.setTag(viewHolder);
        } else {
            viewHolder = (ViewHolder) view.getTag();
        }

        return view;
    }

    private static class ViewHolder {
        TextView timer;
        TextView wk1;
        TextView wk2;
        TextView wk3;
        TextView wk4;
        TextView wk5;
        TextView wk6;
        TextView wk7;
        Switch switch1;
    }
}

我的计时器列表

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/tempID"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="100dp"
    android:background="@drawable/filled_bordered_ellipse"
    >


    <TextView
        android:id="@+id/textViewTime"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="16dp"
        android:layout_marginLeft="16dp"
        android:text="06:30"
        android:textSize="40dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <Switch
        android:id="@+id/switch1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginEnd="24dp"
        android:layout_marginRight="24dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <TextView
        android:id="@+id/textWeekday1"
        android:layout_width="@dimen/weekdays_width"
        android:layout_height="@dimen/weekdays_height"
        android:gravity="center"
        android:text="@string/Monday"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toStartOf="@+id/textWeekday2"
        app:layout_constraintTop_toTopOf="parent"
        android:textSize="@dimen/weekdays_textsize"/>

    <TextView
        android:id="@+id/textWeekday2"
        android:layout_width="@dimen/weekdays_width"
        android:layout_height="@dimen/weekdays_height"
        android:gravity="center"
        android:text="@string/Tuesday"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toStartOf="@+id/textWeekday3"
        app:layout_constraintTop_toTopOf="parent"
        android:textSize="@dimen/weekdays_textsize"/>

    <TextView
        android:id="@+id/textWeekday3"
        android:layout_width="@dimen/weekdays_width"
        android:layout_height="@dimen/weekdays_height"
        android:gravity="center"
        android:text="@string/Wednesday"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toStartOf="@+id/textWeekday4"
        app:layout_constraintTop_toTopOf="parent"
        android:textSize="@dimen/weekdays_textsize"/>

    <TextView
        android:id="@+id/textWeekday4"
        android:layout_width="@dimen/weekdays_width"
        android:layout_height="@dimen/weekdays_height"
        android:gravity="center"
        android:text="@string/Thursday"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toStartOf="@+id/textWeekday5"
        app:layout_constraintTop_toTopOf="parent"
        android:textSize="@dimen/weekdays_textsize"/>

    <TextView
        android:id="@+id/textWeekday5"
        android:layout_width="@dimen/weekdays_width"
        android:layout_height="@dimen/weekdays_height"
        android:gravity="center"
        android:text="@string/Friday"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toStartOf="@+id/textWeekday6"
        app:layout_constraintTop_toTopOf="parent"
        android:textSize="@dimen/weekdays_textsize"/>

    <TextView
        android:id="@+id/textWeekday6"
        android:layout_width="@dimen/weekdays_width"
        android:layout_height="@dimen/weekdays_height"
        android:gravity="center"
        android:text="@string/Saturday"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toStartOf="@+id/textWeekday7"
        app:layout_constraintTop_toTopOf="parent"
        android:textSize="@dimen/weekdays_textsize"/>

    <TextView
        android:id="@+id/textWeekday7"
        android:layout_width="@dimen/weekdays_width"
        android:layout_height="@dimen/weekdays_height"
        android:layout_marginEnd="16dp"
        android:layout_marginRight="16dp"
        android:gravity="center"
        android:text="@string/Sunday"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toStartOf="@+id/switch1"
        app:layout_constraintTop_toTopOf="parent"
        android:textSize="@dimen/weekdays_textsize"/>

</androidx.constraintlayout.widget.ConstraintLayout>

我的EditTimerActivity是这样开始的:

代码语言:javascript
复制
public class EditTimerActivity extends AppCompatActivity {

    Button[] button = new Button[7];
    Boolean[] wk = new Boolean[7];

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_edit_timer);


        Intent intent = EditTimerActivity.this.getIntent();
        Timer timer = (Timer)intent.getSerializableExtra("timer");
EN

回答 1

Stack Overflow用户

发布于 2019-11-19 23:20:10

试着把你的listView.setOnItemClickListener放在你的listView.setAdapter之前,不确定,但我只是看了一下我所有的项目,每次我把它放在前面,它都有效。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58935255

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档