>source

두 가지 활동이 있습니다. DrinksActivityFoodsActivity . 둘 다 자신의 RecyclerViews 항목을 표시합니다.

그들은 잘 작동하지만, 나는 그들의 가치를 .. sample_activity .

이것이 방법입니다 sample_activity 처럼 보입니다.

public class sample_layout extends AppCompatActivity {
    private DrawerLayout dl;
    private ActionBarDrawerToggle t;
    private NavigationView nv;
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.sample_layout);
        SetTexts();
        Navigation();
        TextView textView = findViewById(R.id.txtFoodName);
        Intent intent = getIntent();
        DrinksModel drinksM = intent.getParcelableExtra("drinks");
        FoodModel foodM = intent.getParcelableExtra("foods");
        
        //how can i set the textView from their own getParcelableExtra values
        String FoodName = foodM.getFoodName();
        textView.setText(FoodName);
        //how can i set the textView from their own getParcelableExtra values
        String DrinkName = drinksM.getDrinkName();
        textView.setText(DrinkName);
    }
        
    public String getName(String email) {
        String stringList = null;
        DatabaseHelperAccounts db = new DatabaseHelperAccounts(this);
        SQLiteDatabase dbb = db.getWritableDatabase();
        String selectQuery = "SELECT FullName FROM " + db.DATABASE_TABLE + " WHERE email = '" + email + "'";
        Cursor c = dbb.rawQuery(selectQuery, null);
        if (c != null) {
            c.moveToFirst();
            while (c.isAfterLast() == false) {
                String name2 = (c.getString(c.getColumnIndex("FullName")));
                stringList = name2;
                c.moveToNext();
            }
        }
        return stringList;
    }
    public void SetTexts() {
        String StringEmail = LoginFragment.EmailString;
        NavigationView nav_view = (NavigationView) findViewById(R.id.nv);//this is navigation view from my main xml where i call another xml file
        View header = nav_view.getHeaderView(0);//set View header to nav_view first element (i guess)
        TextView UserFullNameNav = (TextView) header.findViewById(R.id.UserFullNameNav);//now assign textview imeNaloga to header.id since we made View header.
        TextView UserEmailNav = (TextView) header.findViewById(R.id.UserEmailNav);
        getName(StringEmail);
        UserEmailNav.setText(StringEmail);// And now just set text to that textview
        UserFullNameNav.setText(getName(StringEmail));
    }
    public void Navigation() {
        dl = findViewById(R.id.sampleLayout);
        t = new ActionBarDrawerToggle(this, dl, R.string.open, R.string.close);
        dl.addDrawerListener(t);
        t.syncState();
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        nv = findViewById(R.id.nv);
        nv.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
            @Override
            public boolean onNavigationItemSelected(@NonNull MenuItem item) {
                int id = item.getItemId();
                switch (id) {
                    case R.id.itemDrinks:
                        Intent DrinksIntent = new Intent(getApplicationContext(), DrinksActivity.class);
                        startActivity(DrinksIntent);
                        break;
                    case R.id.itemFoods:
                        Intent FoodsIntent = new Intent(getApplicationContext(), FoodsActivity.class);
                        startActivity(FoodsIntent);
                        break;
                    case R.id.itmLogout:
                        Intent LogOut = new Intent(getApplicationContext(), MainActivity.class);
                        startActivity(LogOut);
                        finish();
                    default:
                        return true;
                }
                return true;
            }
        });
    }
    @Override
    public boolean onOptionsItemSelected(@NonNull 'MenuItem' item) 
    {
        if (    t.onOptionsItemSelected(item))
            return true;
        return super.onOptionsItemSelected(item);
    }
}

특정 활동의 recyclerview에서 선택한 항목의 가치를 어떻게 얻을 수 있습니까?

  • 답변 # 1

    이것을 사용해보십시오

    if (getIntent()!=null ){
        if (getIntent.hasExtra("drinks")){ 
           DrinksModel drinksM = intent.getParcelableExtra("drinks");
           String DrinkName = drinksM.getDrinkName();
           textView.setText(DrinkName);
        }else if(getIntent.hasExtra("foods")){
           FoodModel foodM = intent.getParcelableExtra("foods");
           String FoodName = foodM.getFoodName();
           textView.setText(FoodName);
      }
    }
    
    

  • 답변 # 2

    내가 볼 수 있듯이 데이터를 저장하기 위해 데이터베이스를 사용하고 있습니까? 그렇다면 가장 좋은 (그리고 가장 정확한) 방법은 활동간에 식별자 (예 : "id")를 전달한 다음 필요한 데이터베이스에서 해당 ID로 값을 가져 오는 것입니다. 그러나 실제로 전체 개체를 전달하려면 직렬화 가능 또는 분할 가능을 사용해야합니다 (Android SDK에서 가져 오기 때문에 분할 가능이 더 나은 선택입니다). 그런 다음 값을 얻는 활동에서 구문 분석하십시오.

    편집하다: Parcelable Value 전화를 받으려면 :

    Food food = getIntent().getExtras().getParcelable("food");
    
    

    그런 다음 전화하십시오.

    textView.setText(food.getYourField);
    
    

관련 자료

  • 이전 r - 선형 모델 요약 테이블의 잘못된 출력
  • 다음 c - 수신 오류 - "루프 본문에서 수정되지 않은 루프 조건에서 사용 된 변수"