Как отправить значение из TextView в RecyclerView в другом действии

#java #android

#java #Android

Вопрос:

Я пытаюсь отправить значение из TextView в RecyclerView (в другом действии).

MainActivity.class Я хочу использовать метод onClickYes для отправки каждого слова в мой RecyclerView в другом действии.

 public class MainActivity extends AppCompatActivity {
TextView display, progress;
private List<String> worldList;
private ArrayList<RecyclerItems> recyclerItems;
private WordDataBase wordDatabaseForYes;
int counter = 1;
int i = 0;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    display = findViewById(R.id.dispalay);
    progress = findViewById(R.id.progress);
    recyclerItems = new ArrayList<>();
    worldList = new ArrayList<>();
    worldList.add("cat");//i want to display this word firstly
    worldList.add("dog");//it after click
    worldList.add("monkey");//after it
    worldList.add("bird");//after it
    worldList.add("fish");//etc
    worldList.add("home");//etc
    worldList.add("car");//etc
}

public void onClickYes(View view) {
    if (i >= worldList.size()) return;
    display.setText(worldList.get(i));
    progress.setText(counter   "");
    //заполняем наш recyclerView
    //Intent intent  = new Intent(MainActivity.this, YesActivity.class);
    //intent.putExtra("word", user   ", вам передали: "   gift);
    //startActivity(intent);
    i  ;
    counter  ;
}

public void onClickNo(View view) {
    Toast.makeText(this, "Size is "   worldList.size(), Toast.LENGTH_SHORT).show();
    //recyclerItems.add(new RecyclerItems(worldList.get(i)));
    i = 0;
    counter = 0;
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.menu, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
    Intent intent;
    switch (item.getItemId()) {
        case R.id.yes:
            recyclerItems.add(new RecyclerItems(worldList.get(i)));
            intent = new Intent(MainActivity.this, YesActivity.class);
            startActivity(intent);
            break;
        case R.id.no:
            intent = new Intent(MainActivity.this, NoActivity.class);
            startActivity(intent);
            break;
        case R.id.about:
            Toast.makeText(this, "By SaturnPRO", Toast.LENGTH_SHORT).show();
            //openDialogAbout
            break;
    }
    return true;
}
 

}

Мое второе действие

 public class YesActivity extends AppCompatActivity {
    private RecyclerView recyclerView;
    private RecyclerView.Adapter adapter;
    private RecyclerView.LayoutManager layoutManager;
    ArrayList<RecyclerItems> yesWordList;

    private WordDataBase wordDatabaseForYes;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        yesWordList = new ArrayList<>();
        recyclerView = findViewById(R.id.rvYes);
        recyclerView.setHasFixedSize(true);
        adapter = new RecyclerViewAdapter(yesWordList);
        layoutManager = new LinearLayoutManager(this);
        recyclerView.setAdapter(adapter);
        recyclerView.setLayoutManager(layoutManager);


    }
}
 

Также у меня есть адаптер, но я не смог показать его здесь.

Как я могу это сделать? enter code here Пожалуйста, помогите.

Ответ №1:

Отправьте слово в intent дополнительно:

 case R.id.yes:
    recyclerItems.add(new RecyclerItems(worldList.get(i)));
    intent = new Intent(MainActivity.this, YesActivity.class);
    intent.putExtra("key", worldList.get(i));
    startActivity(intent);
    break;
 

В вашем втором занятии:

 String name = intent.getStringExtra("key");
 

Ответ №2:

Вы можете сделать wordList статический элемент. Затем вы можете получить к нему доступ в своем адаптере.