Передача строки из ClickListener - PullRequest
0 голосов
/ 17 февраля 2019

В моей деятельности у меня есть HorizontalScrollView с девятью TextViews, а ниже у меня есть ListView.Если я нажму на одну из девяти TextViews, список обновится и покажет некоторые данные, которые хранятся в моей БД и имеют то же значение, что и TextView (это работает без проблем).

СейчасЯ нажимаю на один ListItem, и открывается новое действие.

Здесь я хочу, чтобы значение из TextView также отправлялось новому Activity.К сожалению, я не знаю, как это сделать, и надеюсь, что кто-то может мне помочь.

Вот часть моего кода:

dataSource = new ArrayList<>();

lvWP.setAdapter(new WPAdapter(this, dataSource));

horiView = (HorizontalScrollView) findViewById(R.id.horiView );
    lvWP.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            Object element = parent.getAdapter().getItem(position);

            if (element instanceof Workpackage){
                Workpakage workpackage= (Workpakage ) element;

                Intent wp = new Intent(ProjektOverview.this, WorkpackageDetail.class);

                String projekt = tvProjectTitle.getText().toString();

                wp.putExtra(WorkpackageDetail.WP_KEY, workpackage.getId());
                wp.putExtra("DEPARTMENT", department);  //THIS SHOULD BE THE STRING FROM tvWKA
                wp.putExtra("PROJECTNAME", project);

                startActivity(wp);
            }
        }
    });

// HERE I CLICK ON ONE TEXTVIEW FROM THE HORIZONTALSCROLLVIEW 
tvWKA.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        String department= "WKA";  // THIS STRING I WANT TO SEND TO MY LISTVIEW ONCLICKLISTENER

        String project= tvProjectTitle.getText().toString();
        refreshList(department, projekt);
    }
});

public void refreshList(String department, String project) {
    dataSource.clear();
    dataSource.addAll(WorkpackageDB.getInstance(ProjectOverview.this).readAllAP(department, projekt));
    lvWP.invalidateViews();
}

1 Ответ

0 голосов
/ 17 февраля 2019

В вашем классе Activity может быть просто глобальная переменная, такая как selectedDepartment, которая может быть заполнена при нажатии на TextView.

private String selectedDepartment; 

tvWKA.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        selectedDepartment = "WKA";  
        String project = tvProjectTitle.getText().toString();
        refreshList(department, projekt);
    }
});

Затем вы можете добавить это как дополнительное при передаче намерения другому занятию.

wp.putExtra(WorkpackageDetail.WP_KEY, workpackage.getId());
wp.putExtra("DEPARTMENT", selectedDepartment); // Here 
wp.putExtra("PROJECTNAME", project);

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...