29
Июл
2021

Как сделать, чтобы одна Activity передавала данные в lIstView в другой Activity?

Я уже несколько дней пытаюсь сделать мини-приложение, но совсем запуталась. У меня есть 2 Activity, в первой ListView и кнопка создать привычку. Когда нажимаете на кнопку, вы переходите во вторую Activity, в которой 2 EditText: title(название привычки) и description (описание привычки).Когда нажимаете на кнопку сохранить и на стрелку, то возвращаетесь назад, теперь ListView показывает только название привычки, которую только что сохранили. Сам вопрос состоит в том, как сделать, чтобы ListView показывал только название привычек, но кликая по ним, эмулятор переходил во 2 Activity и показывал сохраненные название и описание именно для этой привычки.

(Я сделала каждую привычку как отдельный объект класса HabitClass.java, но не уверена, что это правильно). Мой код на данный момент.

1 Activity:

import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import java.util.ArrayList;
import java.util.HashSet;

public class MainActivity extends AppCompatActivity {
    public static ArrayList<String> habitStringArray = new ArrayList<>();
    static ArrayAdapter arrayAdapter;

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

        ImageView addIcon = (ImageView) findViewById(R.id.arrow_icon);
        addIcon.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent = new Intent(MainActivity.this, CreateHabit.class);
                startActivity(intent);
            }
        });

        SharedPreferences sharedPreferences = getApplicationContext().getSharedPreferences("com.example.mygoalsandhabits", Context.MODE_PRIVATE);
        HashSet<String> set = (HashSet<String>) sharedPreferences.getStringSet("TitleSet", null);
        if (set != null) {
            habitStringArray = new ArrayList(set);
        } else {
            habitStringArray.add("Read a book");
        }
        ListView listView = (ListView) findViewById(R.id.habit_list);
        arrayAdapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, habitStringArray);
        listView.setAdapter(arrayAdapter);
        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) {
                Intent intent = new Intent(getApplicationContext(), CreateHabit.class);
                intent.putExtra("habitId", position);  
                startActivity(intent);
            }
        });
    }
}

2 Activity:

import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.view.View;
import android.widget.AdapterView;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

import java.util.ArrayList;
import java.util.HashSet;

public class CreateHabit extends AppCompatActivity {
    HabitClass habitClassObject;
    public static ArrayList<HabitClass> habitArray = new ArrayList<>();
    int habitId;
    String title, descr;

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

        EditText edTxtTitle = (EditText) findViewById(R.id.ed_txt_title);
        EditText edTxtDescr = (EditText) findViewById(R.id.ed_txt_descr);
        Intent intent = getIntent();
        habitId = intent.getIntExtra("noteId", -1);
        if (habitId != -1) {
            habitClassObject = habitArray.get(habitId);
            title = habitClassObject.getTitle();
            descr = habitClassObject.getDescr();
            edTxtTitle.setText(title);
            edTxtDescr.setText(descr);
        }
        TextView saveBtn = (TextView) findViewById(R.id.save_txt);
        saveBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                title = edTxtTitle.getText().toString();
                descr = edTxtDescr.getText().toString();
                habitClassObject = new HabitClass(title, descr);
                MainActivity.habitStringArray.add(habitClassObject.title);
                habitArray.add(habitClassObject);
                MainActivity.habitStringArray.add(title);
                SharedPreferences sharedPreferences = getApplicationContext().getSharedPreferences("com.example.notes", Context.MODE_PRIVATE);

            }
        });

    }
}

HabitClass.java:

package com.example.mygoalsandhabits;

public class HabitClass {
    String title;
    String descr;

    public HabitClass(String title1, String descr1) {
        this.descr = descr;
        this.title = title;
    }


    public String getDescr() {
        return descr;
    }

    public void setDescr(String descr) {
        this.descr = descr;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }
}

Источник: https://ru.stackoverflow.com/questions/1312027/%D0%9A%D0%B0%D0%BA-%D1%81%D0%B4%D0%B5%D0%BB%D0%B0%D1%82%D1%8C-%D1%87%D1%82%D0%BE%D0%B1%D1%8B-%D0%BE%D0%B4%D0%BD%D0%B0-activity-%D0%BF%D0%B5%D1%80%D0%B5%D0%B4%D0%B0%D0%B2%D0%B0%D0%BB%D0%B0-%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D0%B5-%D0%B2-listview-%D0%B2-%D0%B4%D1%80%D1%83%D0%B3%D0%BE%D0%B9-activity

Тебе может это понравится...

Добавить комментарий