【问题标题】:Passing a String from ClickListener从 ClickListener 传递字符串
【发布时间】:2019-07-11 02:51:45
【问题描述】:

在我的活动中,我有一个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();
}

【问题讨论】:

  • 为什么不将 department 设置为 Activity 类的字段?这样,您可以在 onItemClick() 中访问它
  • 因为这很容易 :) 不认真,谢谢,从来没有想过这么简单的方法.. 试了一下,效果很好.. 非常感谢

标签: java android string listview onitemclicklistener


【解决方案1】:

您可以在您的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);

希望对您有所帮助!

【讨论】:

    猜你喜欢
    • 2017-05-02
    • 2018-08-05
    • 1970-01-01
    • 2021-05-05
    • 1970-01-01
    • 2012-11-04
    • 1970-01-01
    • 2017-03-15
    • 2016-10-26
    相关资源
    最近更新 更多