【问题标题】:SQLite - RecyclerView - many tables do not workSQLite - RecyclerView - 许多表不起作用
【发布时间】:2018-01-04 05:40:14
【问题描述】:

我在 sqlite 中创建两个表并在 RecyclerView 中显示它们时遇到问题,更具体地说是使用一个表。我在问题中添加了应用程序的屏幕截图,以便您了解问题所在。

我有 3 个活动:FirstActivity,其中有两个按钮(星期一和星期二)-> 从这个活动我们转到 MainActivity,按钮选择(星期一)-> 将数据保存在 table_MON 和选择按钮之后(星期二) 在 table_Tue 中。问题是一切正常,当我们按下按钮(星期一)时,我们可以保存训练、编辑和删除它。但是,当我们转到按钮(星期二)时,我们只能添加培训,但不能编辑或删除它们。但是,我不知道为什么?我已经在这个问题上看了一个星期,但我不知道发生了什么,也许重新审视会有助于解决问题。 我的数据库由两个表组成:tableMon 和 tableTue,但我在其中使用相同的列(练习、体重等 ..)和单独的 _id,我不知道这是否会成为问题。也许问题是我在这两种情况下都使用 MainActivity?

截图应用:

FirstActivity

enter image description here

点击按钮 Monday --> MainActivity.class enter image description here

星期二单击按钮 --> MainActivity.class enter image description here

Button Tuesday --> DetailActivity 和她是我无法更新和删除培训的问题。 enter image description here

FirstActivity.class

public class FirstActivity extends AppCompatActivity {
   Button buttonMon, buttonTue;

    public static final String BUTTON_KEY1 = "BUTTON_KEY";
    public static final String BUTTON_KEY2 = "BUTTON_KEY2";
    public static final String BUTTON_VALUE = "1";
    public static final String BUTTON_VALUE2 = "2";

    public static  boolean WAS_RUNNING;

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

        buttonMon = (Button) findViewById(R.id.buttonMonday);
        buttonTue = (Button) findViewById(R.id.buttonTuesday);

        WAS_RUNNING = false;

        //OPEN THE SAME MAINACTIVITY
        buttonMon.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                WAS_RUNNING = true;
                Intent intent = new Intent(FirstActivity.this, MainActivity.class);
                intent.putExtra(BUTTON_KEY1, BUTTON_VALUE);

                startActivity(intent);
            }    });
        //OPEN THE SAME MAINACTIVITY
        buttonTue.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                WAS_RUNNING = true;
                Intent i = new Intent(FirstActivity.this, MainActivity.class);
                i.putExtra(BUTTON_KEY2, BUTTON_VALUE2);
                startActivity(i);
            }    });}}

MainActivity.class

public class MainActivity extends AppCompatActivity {

    private RecyclerView recyclerView;
    private MyAdapter myAdapter;

    private ArrayList<Training> trainingArrayList = new ArrayList<Training>();

    private EditText editTextExercise, editTextWeight, editTextRepeat, editTextSeries;
    private Button buttonSave, buttonBack;

    private Dialog dialog;

    private String value;
    private String value2;

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

         Bundle bundle = getIntent().getExtras();

        FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
        fab.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                showDialog();}});

        if(bundle == null)
        {return;}

        value = bundle.getString(FirstActivity.BUTTON_KEY1);

        value2 = bundle.getString(FirstActivity.BUTTON_KEY2);

        recyclerView = (RecyclerView) findViewById(R.id.recyclerView);

        if(value != null) {

            recyclerView.setLayoutManager(new LinearLayoutManager(this));
            recyclerView.setItemAnimator(new DefaultItemAnimator());

            myAdapter = new MyAdapter(this, trainingArrayList);

            //Refresh MON TABLE
            refreshMonTable();

        }else if(value2 != null) {

            recyclerView.setLayoutManager(new LinearLayoutManager(this));
            recyclerView.setItemAnimator(new DefaultItemAnimator());

            myAdapter = new MyAdapter(this, trainingArrayList);

            //Refresh TUE TABLE
            refreshTueTable(); }}

    public void showDialog()
    {
         dialog = new Dialog(this);

        dialog.setContentView(R.layout.dialog_layout);

        editTextExercise = (EditText) dialog.findViewById(editTextExerciseDialog);
        editTextWeight = (EditText) dialog.findViewById(editTextWeightDialog);
        editTextRepeat = (EditText) dialog.findViewById(editTextRepeatDialog);
        editTextSeries = (EditText) dialog.findViewById(editTextSeriesDialog);

        buttonSave = (Button) dialog.findViewById(buttonSaveDialog);
        buttonBack = (Button) dialog.findViewById(buttonBackDialog);

        buttonBack.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                dialog.dismiss();}});

        buttonSave.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                if(value != null) {
                    saveDataMon(editTextExercise.getText().toString(),
                            String.valueOf(editTextWeight.getText().toString()),
                            String.valueOf(editTextRepeat.getText().toString()),
                            String.valueOf(editTextSeries.getText().toString()));
                } else if(value2 != null) {
                    saveDataTue(editTextExercise.getText().toString(),
                            String.valueOf(editTextWeight.getText().toString()),
                            String.valueOf(editTextRepeat.getText().toString()),
                            String.valueOf(editTextSeries.getText().toString()));
                }}});

        dialog.show();}

    private void saveDataMon(String exercise, String weight, String repeat, String series)
    {
            DBAdapter adapter = new DBAdapter(this);

            adapter.openDatabase();

            long result = adapter.addMon(exercise, weight, repeat, series);

            if (result > 0) {
                editTextExercise.setText("");
                editTextWeight.setText("");
                editTextRepeat.setText("");
                editTextSeries.setText("");

                dialog.dismiss();

            } else {
                Snackbar.make(editTextExercise, "Unable to save!", Snackbar.LENGTH_SHORT).show();}

            adapter.closeDB();

            refreshMonTable();}

    private void saveDataTue(String exercise, String weight, String repeat, String series)
    {
        DBAdapter adapter = new DBAdapter(this);

            adapter.openDatabase();

            long result = adapter.addTue(exercise, weight, repeat, series);

            if (result > 0) {
                editTextExercise.setText("");
                editTextWeight.setText("");
                editTextRepeat.setText("");
                editTextSeries.setText("");

                dialog.dismiss();

            } else {
                Snackbar.make(editTextExercise, "Unable to save!", Snackbar.LENGTH_SHORT).show();
            }

            adapter.closeDB();

            refreshTueTable();}

    private void refreshMonTable()
    {
        DBAdapter adapter = new DBAdapter(this);

        adapter.openDatabase();

        trainingArrayList.clear();

        Cursor cursor = adapter.getAllTreningMon();

        if(cursor != null)
        { if(cursor.moveToFirst())
         {
            do {
                int id = cursor.getInt(0);
                String cwiczenie = cursor.getString(1);
                String ciezar = cursor.getString(2);
                String powtorzenia = cursor.getString(3);
                String serie = cursor.getString(4);

                Training training = new Training(id, cwiczenie, ciezar, powtorzenia, serie);
                trainingArrayList.add(training);

            }while (cursor.moveToNext());}}

        recyclerView.setAdapter(myAdapter);

        adapter.closeDB(); }

   private void refreshTueTable()
    {
        DBAdapter adapter = new DBAdapter(this);

        adapter.openDatabase();

        trainingArrayList.clear();

        Cursor cursor = adapter.getAllTreningTue();

        if(cursor != null)
        { if(cursor.moveToFirst())
        {
            do {
                int id = cursor.getInt(0);
                String exercise = cursor.getString(1);
                String weight = cursor.getString(2);
                String repeat = cursor.getString(3);
                String series = cursor.getString(4);

                Training training = new Training(id, exercise, weight, repeat, series);
                trainingArrayList.add(training);

            }while (cursor.moveToNext());}}

        recyclerView.setAdapter(myAdapter);
        adapter.closeDB();
    }
    @Override
    protected void onResume() {
        super.onResume();

       if(value != null) {
            //REFRESH
           refreshMonTable();
        } else if(value2 != null) {
           refreshTueTable();}}
    @Override
    public void onBackPressed() {

        new AlertDialog.Builder(this)
                .setTitle("Exit?")
                .setMessage("Do you want to exit?")
                .setNegativeButton("No", null)
                .setPositiveButton("Yes", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                      MainActivity.super.onBackPressed();
                    }
                }).create().show();}}

DetailActivity.class

public class DetailActivity extends AppCompatActivity {

    private EditText editTextExerciseDetail, editTextWeightDetail, editTextRepeatDetail, editTextSeriesDetail;

    private Button buttonUpdate;
    private Button buttonDelete;

    String mon;
    String tue;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_detail);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);

        Bundle intent = getIntent().getExtras();

        if(intent == null)
        {return;}

                mon = intent.getString(MyAdapter.KEY_MON);
                tue = intent.getString(MyAdapter.KEY_TUE);

            final int idT = intent.getInt("id");
            String cwiczenie = intent.getString("exercise");
            String ciezar = intent.getString("weight");
            String powtorzenia = intent.getString("repeat");
            String serie = intent.getString("series");

        editTextExerciseDetail = (EditText) findViewById(R.id.exerciseEditTxtDetail);
        editTextWeightDetail = (EditText) findViewById(R.id.weightEditTextDetail);
        editTextRepeatDetail = (EditText) findViewById(R.id.repeatEditTextDetail);
        editTextSeriesDetail = (EditText) findViewById(R.id.seriesEditTextDetail);

        buttonUpdate = (Button) findViewById(R.id.updateBtn);
        buttonDelete = (Button) findViewById(R.id.deleteBtn);

        editTextExerciseDetail.setText(cwiczenie);
        editTextWeightDetail.setText(ciezar);
        editTextRepeatDetail.setText(powtorzenia);
        editTextSeriesDetail.setText(serie);

        buttonUpdate.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                if(mon != null) {
                    updateMon(idT, editTextExerciseDetail.getText().toString(),
                            editTextWeightDetail.getText().toString(),
                            editTextRepeatDetail.getText().toString(),
                            editTextSeriesDetail.getText().toString());
                } else if(tue != null) {
                    updateTue(idT, editTextExerciseDetail.getText().toString(),
                            editTextWeightDetail.getText().toString(),
                            editTextRepeatDetail.getText().toString(),
                            editTextSeriesDetail.getText().toString());}}
        });

        buttonDelete.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

               AlertDialog.Builder builder = new AlertDialog.Builder(DetailActivity.this);

                builder.setMessage("Do you want delete this training?")
                        .setTitle("Delete")
                        .create();

               builder.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
                   @Override
                    public void onClick(DialogInterface dialog, int which) {

                       if(mon != null) {
                           deleteMon(idT);
                       }else if(tue != null){
                           deleteTue(idT);}}});

                builder.setNegativeButton("No", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        dialog.dismiss();
                    }});
                builder.show();}});}

    //Update MON TABLE
    private void updateMon(int id, String newExercise, String newWeight, String newRepeat, String newSeries)
    {
        DBAdapter dbAdapter = new DBAdapter(this);
        dbAdapter.openDatabase();

        long result = dbAdapter.updateMon(id, newExercise, newWeight, newRepeat, newSeries);

        if(result > 0)
        {
            editTextExerciseDetail.setText(newExercise);
            editTextWeightDetail.setText(newWeight);
            editTextRepeatDetail.setText(newRepeat);
            editTextSeriesDetail.setText(newSeries);

            this.finish();

            Snackbar.make(editTextExerciseDetail, "Updated Succesfully", Snackbar.LENGTH_SHORT).show();

        }else
        {
            Snackbar.make(editTextExerciseDetail, "Unable to updated", Snackbar.LENGTH_SHORT).show();
        }

        dbAdapter.closeDB();
    }

    //Update TUE TABLE
    private void updateTue(int id, String newExercise, String newWeight, String newRepeat, String newSeries)
    {
        DBAdapter dbAdapter = new DBAdapter(this);
        dbAdapter.openDatabase();

        long result = dbAdapter.updateTue(id, newExercise, newWeight, newRepeat, newSeries);

        if(result > 0)
        {
            editTextExerciseDetail.setText(newExercise);
            editTextWeightDetail.setText(newWeight);
            editTextRepeatDetail.setText(newRepeat);
            editTextSeriesDetail.setText(newSeries);

            this.finish();

            Snackbar.make(editTextExerciseDetail, "Updated Succesfully", Snackbar.LENGTH_SHORT).show();

        }else
        {
            Snackbar.make(editTextExerciseDetail, "Unable to updated", Snackbar.LENGTH_SHORT).show();
        }

        dbAdapter.closeDB();}

    //DELETE MON TABLE
   private void deleteMon(int id)
   {
       DBAdapter dbAdapter = new DBAdapter(this);
       dbAdapter.openDatabase();

       long result = dbAdapter.deleteMon(id);

       if(result>0)
       {
           this.finish();

       }else
       {
           Snackbar.make(editTextExerciseDetail, "Unable to deleted", Snackbar.LENGTH_SHORT).show();
       }
       dbAdapter.closeDB();
   }

    //DELETE TUE TABLE
    private void deleteTue(int id)
    {
        DBAdapter dbAdapter = new DBAdapter(this);
        dbAdapter.openDatabase();

        long result = dbAdapter.deleteTue(id);

        if(result>0)
        {
            this.finish();

        }else
        {
            Snackbar.make(editTextExerciseDetail, "Unable to deleted", Snackbar.LENGTH_SHORT).show();
        }
        dbAdapter.closeDB();}

    @Override
    protected void onResume() {
        super.onResume();}
    @Override
    protected void onRestart() {
        super.onRestart();}}

DBHelper.class

public class DBHelper extends SQLiteOpenHelper {

    //DB
    static final String DB_NAME = "training_db";

    static final int DB_VERSION = '1';

    //TABLES
    static final String TB_NAME_MON = "training_tb_mon";
    static final String TB_NAME_TUE = "training_tb_tue";

    //COLUMNS
    static final String ROW_ID_MON = "id_Mon";
    static final String ROW_ID_TUE = "id_Tue";

    //ROW
    static final String EXERCISE = "exercise";
    static final String WEIGHT = "weight";
    static final String REPEAT = "repeat";
    static final String SERIES = "series";

    static final String CREATE_TB_MON = "CREATE TABLE training_tb_mon (id_Mon INTEGER PRIMARY KEY AUTOINCREMENT,"
            + "exercise TEXT NOT NULL, weight TEXT NOT NULL, repeat TEXT NOT NULL, series TEXT NOT NULL);";

    static final String CREATE_TB_TUE = "CREATE TABLE training_tb_tue (id_Tue INTEGER PRIMARY KEY AUTOINCREMENT,"
           + "exercise TEXT NOT NULL, weight TEXT NOT NULL, repeat TEXT NOT NULL, series TEXT NOT NULL);";

    public DBHelper(Context context) {
        super(context, DB_NAME, null, DB_VERSION);}

    @Override
    public void onCreate(SQLiteDatabase db) {

        try {
            db.execSQL(CREATE_TB_MON);
            db.execSQL(CREATE_TB_TUE);
        }catch (Exception e) {
            e.printStackTrace();
        }}
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        db.execSQL("DROP TABLE IF EXISTS " + TB_NAME_MON);
        db.execSQL("DROP TABLE IF EXISTS " + TB_NAME_TUE);

        onCreate(db);
    }}

DBAdapter.class

public class DBAdapter {

    Context c;
    DBHelper dbHelper;
    SQLiteDatabase db;

    public DBAdapter(Context c) {
        this.c = c;
        dbHelper = new DBHelper(c);
    }

    //OPEN DATABASE
    public DBAdapter openDatabase() {

        try {
            db = dbHelper.getWritableDatabase();
        }catch (SQLiteException e) {
            e.printStackTrace();
       }
        return this;
    }
    //CLOSE DATABASE
    public void closeDB()
    {
        try{
            dbHelper.close();
        }catch (SQLiteException e){
            e.printStackTrace();
        }}

    //Add training Mon
    public long addMon(String exercise, String weight, String repeat, String series)
    {
        try{
            ContentValues contentValues = new ContentValues();
            contentValues.put(DBHelper.EXERCISE, exercise);
            contentValues.put(DBHelper.WEIGHT, weight);
            contentValues.put(DBHelper.REPEAT, repeat);
            contentValues.put(DBHelper.SERIES, series);
            return db.insert(DBHelper.TB_NAME_MON, DBHelper.ROW_ID_MON, contentValues);

        }catch (SQLiteException e) {
         e.printStackTrace();   }
        return 0;}
    //Add training Tue
    public long addTue(String exercise, String weight, String repeat, String series)
    {
        try{
            ContentValues contentValues = new ContentValues();
            contentValues.put(DBHelper.EXERCISE, exercise);
            contentValues.put(DBHelper.WEIGHT, weight);
            contentValues.put(DBHelper.REPEAT, repeat);
            contentValues.put(DBHelper.SERIES, series);
            return db.insert(DBHelper.TB_NAME_TUE, DBHelper.ROW_ID_TUE, contentValues);

        }catch (SQLiteException e) {
            e.printStackTrace();
        }
        return 0;
    }
    //REFRESH TABLE MON

    public long updateMon(int id, String exercise, String weight, String repeat, String series)
    {
       try{
            ContentValues contentValues = new ContentValues();
            contentValues.put(DBHelper.EXERCISE, exercise);
            contentValues.put(DBHelper.WEIGHT, weight);
            contentValues.put(DBHelper.REPEAT, repeat);
            contentValues.put(DBHelper.SERIES, series);
            contentValues.put(DBHelper.ROW_ID_MON, id);

            return db.update(DBHelper.TB_NAME_MON, contentValues, DBHelper.ROW_ID_MON + " =?", new String[]{String.valueOf(id)});

        }catch (SQLiteException e) {
            e.printStackTrace();   }
       return 0;
    }

    //REFRESH TABLE TUE
    public long updateTue(int id, String exercise, String weight, String repeat, String series)
    {
        try{
            ContentValues contentValues = new ContentValues();
            contentValues.put(DBHelper.EXERCISE, exercise);
            contentValues.put(DBHelper.WEIGHT, weight);
            contentValues.put(DBHelper.REPEAT, repeat);
            contentValues.put(DBHelper.SERIES, series);
            contentValues.put(DBHelper.ROW_ID_TUE, id);

            return db.update(DBHelper.TB_NAME_TUE, contentValues, DBHelper.ROW_ID_TUE + " =?", new String[]{String.valueOf(id)});

        }catch (SQLiteException e) {
            e.printStackTrace();
        }
        return 0;
    }
    //DELETE ROW TABLE MON
    public long deleteMon(int id)
    {
        try{
            return db.delete(DBHelper.TB_NAME_MON, DBHelper.ROW_ID_MON + " =?", new String[]{String.valueOf(id)});
       }catch (SQLiteException e) {
            e.printStackTrace();
        }
        return 0;    }

    //DELETE ROW TABLE TUE
    public long deleteTue(int id)
    {
        try{
            return db.delete(DBHelper.TB_NAME_TUE, DBHelper.ROW_ID_TUE + " =?", new String[]{String.valueOf(id)});

        }catch (SQLiteException e) {
           e.printStackTrace();}

        return 0;}

    //ALL TRAINING TABLE MON

    public Cursor getAllTreningMon() {

        try{
            String[] columns = {DBHelper.ROW_ID_MON, DBHelper.EXERCISE, DBHelper.WEIGHT, DBHelper.REPEAT, DBHelper.SERIES};

            return db.query(DBHelper.TB_NAME_MON, columns, null, null, null, null, null);

        }catch (SQLiteException e)
        {
            e.printStackTrace();
        }
        return null;
    }
    //ALL TRAINING TABLE TUE
   public Cursor getAllTreningTue() {

        try{
            String[] columns = {DBHelper.ROW_ID_TUE, DBHelper.EXERCISE, DBHelper.WEIGHT, DBHelper.REPEAT, DBHelper.SERIES};

            return db.query(DBHelper.TB_NAME_TUE, columns, null, null, null, null, null);

        }catch (SQLiteException e)
        {
            e.printStackTrace();
        }
        return null;}}

MyAdapter.class

public class MyAdapter extends RecyclerView.Adapter<MyHolder> {

    Context c;
    ArrayList<Training> training;

    public static String KEY_MON = "KEY_MON";
    public static String KEY_TUE = "KEY_TUE";
    public static String VALUE_MON = "10";
    public static String VALUE_TUE = "20";

    public <T extends Training> MyAdapter(Context c, ArrayList<Training> training) {
        this.c = c;
        this.training = training;
    }
    @Override
    public MyHolder onCreateViewHolder(ViewGroup parent, int viewType) {

        View v = LayoutInflater.from(c).inflate(R.layout.card_view_model, parent, false);

        return new MyHolder(v);
    }
    @Override
    public void onBindViewHolder(MyHolder holder, final int position) {

        holder.textViewModel.setText(training.get(position).getExercise());

        holder.setItemClickListener(new ItemClickListener() {
            @Override
            public void onItemClick(View v) {
                if (FirstActivity.WAS_RUNNING)

                {Intent intent = new Intent(c, DetailActivity.class);

                    intent.putExtra(KEY_MON, VALUE_MON);
                    intent.putExtra("id", training.get(position).getId());
                    intent.putExtra("exercise", training.get(position).getExercise());
                    intent.putExtra("weight", training.get(position).getWeight());
                    intent.putExtra("repeat", training.get(position).getRepeat());
                    intent.putExtra("series", training.get(position).getSeries());

                    c.startActivity(intent);

                } else if (FirstActivity.WAS_RUNNING)

                {Intent intent2 = new Intent(c, DetailActivity.class);

                    intent2.putExtra(KEY_TUE, VALUE_TUE);
                    intent2.putExtra("id", training.get(position).getId());
                    intent2.putExtra("exercise", training.get(position).getExercise());
                    intent2.putExtra("weight", training.get(position).getWeight());
                    intent2.putExtra("repeat", training.get(position).getRepeat());
                    intent2.putExtra("series", training.get(position).getSeries());

                    c.startActivity(intent2);
                }}});}

    @Override
    public int getItemCount() {
        return training.size();}}

Training.class

public class Training {

     int id;
     String exercise;
     String weight;
     String repeat;
     String series;
    public Training(int id, String exercise, String weight, String repeat, String series) {
        this.id = id;
        this.exercise = exercise;
        this.weight = weight;
        this.repeat = repeat;
        this.series = series;
    }
    public int getId() {return id;}
    public void setId(int id) { this.id = id;}
    public String getExercise() {return exercise; }
    public void setExercise(String exercise) {this.exercise = exercise;}
    public String getWeight() {return weight;}
    public void setWeight(String weight) {this.weight = weight; }
    public String getRepeat() {return repeat;}
    public void setRepeat(String repeat) { this.repeat = repeat;}
    public String getSeries() {return series;}
    public void setSeries(String series) {this.series = series;}}

【问题讨论】:

  • 请不要在这里发布整个项目。只有相关位
  • @Noise Generator 抱歉。那么,我应该编辑问题并只留下一段不起作用的代码吗?有没有地方可以让我完成整个项目?
  • 只有您怀疑有误的部分。不,不在 SO 上。

标签: java android android-sqlite


【解决方案1】:

在您的 MyAdapter 类中,在 onItemClick 方法中,在 onBindViewHolder 方法中,对于 Tue 处理的第二次检查永远不会运行。

你有:-

if (FirstActivity.WAS_RUNNING) {
    .......
} else if (FirstActivity.WAS_RUNNING) {
    .......
}

即你是说如果 FirstActivity 没有运行并且 FirstActivity 正在运行然后做你的事情。 即 else 只有在 FirstActivity 没有运行时才会被输入,在这种情况下,if (FirstActivity.WAS_RUNNING) 永远不会为真。

也许有 2 个布尔值 MONDAY_WAS_RUNNING 和 TUESDAY_WAS RUNNING(您可以通过在 buttonTue 侦听器中将其设置为 false 来使用现有的布尔值,在 else 中进行星期二处理(没有 if))。

例如:-

FirstActivity 类:-

    public static  boolean MONDAY_WAS_RUNNING;
    public static  boolean TUESDAY_WAS_RUNNING;

    ..........


    buttonMon.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            MONDAY_WAS_RUNNING = true;
            TUESDAY_WAS_RUNNING = false;
            Intent intent = new Intent(FirstActivity.this, MainActivity.class);
            intent.putExtra(BUTTON_KEY1, BUTTON_VALUE);

            startActivity(intent);
        }    });
        buttonTue.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            TUESDAY_WAS_RUNNING = true;
            MONDAY_WAS_RUNNING = false;
            Intent i = new Intent(FirstActivity.this, MainActivity.class);
            i.putExtra(BUTTON_KEY2, BUTTON_VALUE2);
            startActivity(i);
        }    });}}

我的适配器:-

@Override
    public void onBindViewHolder(MyHolder holder, final int position) {

        holder.textViewModel.setText(training.get(position).getExercise());

        holder.setItemClickListener(new ItemClickListener() {
            @Override
            public void onItemClick(View v) {
                if (FirstActivity.MONDAY_WAS_RUNNING)

                {Intent intent = new Intent(c, DetailActivity.class);

                    intent.putExtra(KEY_MON, VALUE_MON);
                    intent.putExtra("id", training.get(position).getId());
                    intent.putExtra("exercise", training.get(position).getExercise());
                    intent.putExtra("weight", training.get(position).getWeight());
                    intent.putExtra("repeat", training.get(position).getRepeat());
                    intent.putExtra("series", training.get(position).getSeries());

                    c.startActivity(intent);

                } else if (FirstActivity.TUESDAY_WAS_RUNNING)

                {Intent intent2 = new Intent(c, DetailActivity.class);

                    intent2.putExtra(KEY_TUE, VALUE_TUE);
                    intent2.putExtra("id", training.get(position).getId());
                    intent2.putExtra("exercise", training.get(position).getExercise());
                    intent2.putExtra("weight", training.get(position).getWeight());
                    intent2.putExtra("repeat", training.get(position).getRepeat());
                    intent2.putExtra("series", training.get(position).getSeries());

                    c.startActivity(intent2);
                }}});}

不过我可能会选择:-

    @Override
    public void onBindViewHolder(MyHolder holder, final int position) {
           holder.textViewModel.setText(training.get(position).getExercise());
        holder.setItemClickListener(new ItemClickListener() {
            @Override
            public void onItemClick(View v) {
                Intent intent = new Intent(c, DetailActivity.class);
                if (FirstActivity.MONDAY_WAS_RUNNING) {
                    intent.putExtra(KEY_MON, VALUE_MON);
                } else {
                    intent.putExtra(KEY_TUE, VALUE_TUE);
                }                       
                intent.putExtra("id", training.get(position).getId());
                intent.putExtra("exercise", training.get(position).getExercise());
                intent.putExtra("weight", training.get(position).getWeight());
                intent.putExtra("repeat", training.get(position).getRepeat());
                intent.putExtra("series", training.get(position).getSeries());
                c.startActivity(intent);
        });
    }

注意!上面的代码没有经过检查,而是在原则上的代码

【讨论】:

  • 你是最棒的!太感谢了!我花了几天时间,什么也没有……现在一切正常。
  • 我已经以这种方式更正了我的代码,一切正常,再次感谢您的工作。
  • @recyclerview np.
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-01-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多