从ClickListener传递字符串

问题描述 投票:0回答:1

在我的活动中,我有一个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();
}
java android string listview onitemclicklistener
1个回答
0
投票

您可以在selectedDepartment类中拥有像Activity这样的全局变量,当您单击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);

希望有所帮助!

© www.soinside.com 2019 - 2024. All rights reserved.