Получение текста из текущего элемента.Android

186
14 апреля 2017, 20:22

Есть обработчик нажатия на элемент, посредством которого происходит переход на новое Activity

В новом Activity есть toolbar, в котором должен отображаться текст непосредственно полученный из нажатого элемента.

Есть кое-какой набросок, созданный при помощи Ютба, но работает не так как нужно. Т.е. суть в том, что есть список фильмов, - при нажатии на один из них открывается новое активити, содержащее инфу о фильме.

Главное активити :

public class HomeworkActivity extends AppCompatActivity {
    final List<ToDoItems> list = new ArrayList<>(Arrays.asList(
            new ToDoItems ("Seven"),
            new ToDoItems ("Sleepy Hollow"),
            new ToDoItems ("House of Wax"),
            new ToDoItems ("From Hell")
    ));
    ToDoAdapter adapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.hw);
        adapter = new ToDoAdapter(this,list);
        final ListView listView = (ListView) findViewById(R.id.Item);
        listView.setAdapter(adapter);
        listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
        Toolbar toolbar=(Toolbar) findViewById(R.id.main_toolbar);
        toolbar.setTitle("My Film List");
        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                @Override
                public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                    Intent intent = new Intent(HomeworkActivity.this,DescriptionActivity.class);
                 intent.putExtra("FilmName",listView.getItemAtPosition(position).toString());
                    startActivity(intent);
                }
            });

Вызываемое активити:

import android.os.Bundle;
import android.support.v4.content.ContextCompat;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.widget.EditText;
import android.widget.ImageView;
public class DescriptionActivity extends AppCompatActivity {
    ImageView image;
    Toolbar d_toolbar;
    EditText date;
    EditText ganre;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_description);
        image = (ImageView) findViewById(R.id.image);
        d_toolbar= (Toolbar) findViewById(R.id.toolbar);
        date = (EditText) findViewById(R.id.date);
        ganre = (EditText) findViewById(R.id.ganre);
        String film= getIntent().getStringExtra("FilmName");
        Bundle bundle = getIntent().getExtras();
        if (bundle != null) {
            d_toolbar.setTitle(bundle.getString(film));
            if (d_toolbar.getTitle().toString().equalsIgnoreCase("Seven")) {
                image.setImageDrawable(ContextCompat.getDrawable(DescriptionActivity.this,R.drawable.seven));
                date.setText("2000");
                ganre.setText("Thriller,Detective");
            }
            else if (d_toolbar.getTitle().toString().equalsIgnoreCase("Sleepy hollow")) {
                    image.setImageDrawable(ContextCompat.getDrawable(DescriptionActivity.this,R.drawable.sleepy_holl));
                    date.setText("2000");
                    ganre.setText("Thriller,Horror");
            }
            else if (d_toolbar.getTitle().toString().equalsIgnoreCase("House of wax")) {
                    image.setImageDrawable(ContextCompat.getDrawable(DescriptionActivity.this,R.drawable.h_of_wax));
                    date.setText("2000");
                    ganre.setText("Horror");
            }
            else if (d_toolbar.getTitle().toString().equalsIgnoreCase("From hell")) {
                    image.setImageDrawable(ContextCompat.getDrawable(DescriptionActivity.this,R.drawable.from_hell));
                    date.setText("2000");
                    ganre.setText("Thriller,Horror");
            }
        }
    }
}
Answer 1

У вас много лишнего. Сделайте, например, так:

Intent intent = new Intent(HomeworkActivity.this, DescriptionActivity.class);
intent.putExtra("FilmName", list.get(position));
startActivity(intent);

а потом так:

String filmName = getIntent().getStringExtra("FilmName");
d_toolbar.setTitle(filmName);

Ну и всё это надо в БД сложить, меж активити передавать ID записи, а не данные, ничего не хардкодить, пользовать switch вместо if else и правильно именовать переменные.

READ ALSO
Модификация Java-байткода при компиляции

Модификация Java-байткода при компиляции

Какие есть способы изменения Java-байткода во время/после компиляции? Меня интересует возможность за счёт аннотаций модифицировать классы,...

218
проблема с AsyncTask и Thread

проблема с AsyncTask и Thread

Хотел загрузить файл на серверно с потоками проблемы

238
XStream сериализация объекта в XML

XStream сериализация объекта в XML

Есть объектУ него есть несколько объектов, которые содержат в себе переменные типа List<String>

202
Выбрать сразу несколько записей из select

Выбрать сразу несколько записей из select

Добрый день! Нужно выбрать сразу несколько записей из select, и отправить запрос

216