Как я могу изменить itemLayout в классе адаптера - PullRequest
1 голос
/ 15 февраля 2020

Я пытаюсь получить ключ от основного класса, но он всегда получает ноль

 Bundle bundle =new Bundle();
 String type = bundle.getString("theType");



if (type =="Check"){

    view = LayoutInflater.from(parent.getContext())
            .inflate(R.layout.item_note_check, parent, false);

}else if (type =="photo"){
    view = LayoutInflater.from(parent.getContext())
            .inflate(R.layout.item_note_photo, parent, false);
}else {view = LayoutInflater.from(parent.getContext())
         .inflate(R.layout.item_note, parent, false);
}

, чтобы получить kType от

public void onRadioButtonTypeClicked(View view) {
    // Is the button now checked?
    boolean checked = ((RadioButton) view).isChecked();
Bundle bundle = new Bundle();

   // Intent intent = new Intent();
    kType="photo";
    // Check which radio button was clicked
    switch(view.getId()) {
        case R.id.radioButtonSheet:
            if (checked)
                mImageNoteV.setImageResource(R.drawable.radio_button_note);
            kType= "note";
            bundle.putString("theType",kType);
         //   intent.putExtra("theType",kType);
            break;
        case R.id.radioButtonDone:
            if (checked)
                mImageNoteV.setImageResource(R.drawable.radio_button_check_box);
            kType="Check";
            bundle.putString("theType",kType);
        //   intent.putExtra("theType",kType);
            break;
        case R.id.radioButtonPicture:
            if (checked)
                mImageNoteV.setImageResource(R.drawable.radio_button_photo);
            kType = "photo";
            bundle.putString("theType",kType);
         //   intent.putExtra("theType",kType);
            break;
    }

Я пытаюсь установить его в другом классе и получить его снова, но не работает = null. Есть ли хороший способ решить эту проблему

Ответы [ 2 ]

0 голосов
/ 15 февраля 2020

Для этого вам нужно инициализировать две переменные класса типа boolean в вашей деятельности, как показано ниже.

public static boolean defaultType = false;
public static boolean noteCheck = false;

, а затем внести изменения в соответствии с вашим требованием (например: 'noteCheck = true' представляют kType = «Check» и «noteCheck = false» представляют kType = «Photo», а «defaultType = true» представляет kType = «note»)

// Check which radio button was clicked
switch(view.getId()) {
    case R.id.radioButtonSheet:
        if (checked)
            mImageNoteV.setImageResource(R.drawable.radio_button_note);
        defaultType= true;
        break;
    case R.id.radioButtonDone:
        if (checked)
            mImageNoteV.setImageResource(R.drawable.radio_button_check_box);
        noteCheck= true;
        break;
    case R.id.radioButtonPicture:
        if (checked)
            mImageNoteV.setImageResource(R.drawable.radio_button_photo);
        noteCheck = false;
        break;
}

Затем в своем классе адаптера вызовите их по имени класса и установите компоновка выглядит следующим образом:

View view;
    if (defaultType){
        view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_note, parent, false);
    }else {
        view = LayoutInflater.from(context).inflate(noteCheck ? R.layout.item_note_check : R.layout.item_note_photo, parent, false);
    }

Не забудьте вызвать переменные по имени класса, так как они являются переменными класса. Способ работал для меня, надеюсь, он вам поможет.

0 голосов
/ 15 февраля 2020

На ваш вопрос уже дан ответ здесь .

В этом случае вы можете использовать просто Намерение для отправки данных между классами.

Здесь пример использования намерения:

FirstActivity :

Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
intent.putExtra("theType", YOUR_TYPE_HERE);
startActivity(intent);

SecondAcctivity

String type = getIntent.getStringExtra("theType");

Но если вы хотите вместо этого используйте Bundle , вот пример:

FirstActivity :

Bundle bundle = new Bundle();
bundle.putString("theType", YOUR_TYPE_HERE);
Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
intent.putExtras(bundle);
startActivity(intent);

SecondActivity :

Bundle bundle = getIntent().getExtras();
String type = bundle.getString("theType");
...