Android 如何从listview中选择单个项目并在另一个活动中显示结果行的名称

Android 如何从listview中选择单个项目并在另一个活动中显示结果行的名称,android,listview,Android,Listview,我在尝试通过预定义的xmllayoutsimple\u list\u item\u single\u choice从listView获取选中的项目时遇到问题,然后选择项目,然后设置另一个活动中的TextView的文本。 这是我的showMyUI方法,单击TextView dateRange.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText

我在尝试通过预定义的
xml
layout
simple\u list\u item\u single\u choice
listView
获取选中的项目时遇到问题,然后选择项目,然后设置另一个活动中的
TextView
的文本。 这是我的
showMyUI
方法,单击
TextView

dateRange.setOnClickListener(new View.OnClickListener() 
{
@Override
public void onClick(View v) 
{
Toast.makeText(MainActivity.this, "Range clicked",Toast.LENGTH_SHORT).show();
DateRangeClass day=new DateRangeClass(MainActivity.this,dayRangeSelected);
day.showMyUI();
overridePendingTransition(R.anim.right_to_left, R.anim.left_to_right);
        }
    });
我的班级是

package tutorial.projecttwofilter;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Context;
import android.graphics.Color;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
import java.util.ArrayList;
public class DateRangeClass {
Context context;
LinearLayout backButton;
ListView rangeList;
TextView rangeText;
String[] dateRangeData= new String[]{"Next 7 Days", "Next 14 Days", "Next 30 Days"};

  public DateRangeClass(Context context,TextView rangeText) {
    this.context = context;
      this.rangeText=rangeText;
}

 public  void  showMyUI(){
    ((Activity)context).setContentView(R.layout.daterange);
     backButton= (LinearLayout) ((Activity)context).findViewById(R.id.backButton);
     backButton.setOnClickListener(new View.OnClickListener() {
           @Override


           public void onClick(View v) {
               ((Activity) context).finish();
               ((Activity) context).overridePendingTransition(R.anim.left_to_right, R.anim.right_to_left);


           }
       });


         rangeList= (ListView) ((Activity)context).findViewById(R.id.dateRangeList);
        ArrayAdapter<String> adapter= new ArrayAdapter<>(context, android.R.layout.simple_list_item_single_choice, dateRangeData);

         rangeList.setAdapter(adapter);


        rangeList.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override

            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                rangeList.setItemChecked(position, true);
                if(rangeList.isItemChecked(position))
                  Toast.makeText(context, "Checked item is"+rangeList.getCheckedItemPosition(), Toast.LENGTH_SHORT).show();
                  rangeText.setText("You new Change "+rangeList.getCheckedItemPosition());

            }

            @Override
            public void onNothingSelected(AdapterView<?> parent) {
                Toast.makeText(context, "Nothing selected", Toast.LENGTH_SHORT).show();
            }

            });

 }
package tutorial.projecttwofilter;
导入android.annotation.SuppressLint;
导入android.app.Activity;
导入android.content.Context;
导入android.graphics.Color;
导入android.view.view;
导入android.widget.AdapterView;
导入android.widget.ArrayAdapter;
导入android.widget.ImageView;
导入android.widget.LinearLayout;
导入android.widget.ListView;
导入android.widget.TextView;
导入android.widget.Toast;
导入java.util.ArrayList;
公共类日期范围类{
语境;
线性布局后扣;
列表视图范围列表;
文本视图范围文本;
String[]dateRangeData=新字符串[]{“未来7天”、“未来14天”、“未来30天”};
公共DateRangeClass(上下文,文本视图rangeText){
this.context=上下文;
this.rangeText=rangeText;
}
公共void showMyUI(){
((活动)上下文).setContentView(R.layout.daterange);
backButton=(LinearLayout)((活动)上下文).findViewById(R.id.backButton);
backButton.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
((活动)上下文).finish();
((活动)上下文)。覆盖转换(R.anim.left\u到右,R.anim.right\u到左);
}
});
rangeList=(ListView)((活动)上下文).findViewById(R.id.dateRangeList);
ArrayAdapter=新的ArrayAdapter(上下文,android.R.layout.simple\u list\u item\u single\u choice,dateRangeData);
设置适配器(适配器);
rangeList.setOnItemSelectedListener(新的AdapterView.OnItemSelectedListener(){
@凌驾
已选择公共视图(AdapterView父视图、视图视图、整型位置、长id){
rangeList.setItemChecked(位置,true);
if(范围列表。isItemChecked(位置))
Toast.makeText(上下文,“选中项为”+rangeList.GetCheckEditePosition(),Toast.LENGTH_SHORT).show();
rangeText.setText(“您的新更改”+rangeList.getCheckEditePosition());
}
@凌驾
未选择公共无效(AdapterView父级){
Toast.makeText(上下文,“未选择任何内容”,Toast.LENGTH_SHORT).show();
}
});
}

}您尚未开始您的活动


单击按钮时使用startActivity和putIntent方法,在第二个活动中使用getIntent方法显示文本。

将DateRangeClass创建为活动而不是普通类,并使用bundle传递信息。正如我看到的,您正在传递textview,而不是以字符串形式传递文本,并可以在第二个活动中显示

传输数据

String textToBesend  = "Text from textview";

Intent i = new Intent(this, DateRangeActivity.class);
i.putExtra("text", textToBesend);
startActivity(i); 
要在DateRangeActivity中接收数据,请在oncreate方法中编写此代码

Intent intent = getIntent();
String textPassedFromFirstActivity = intent.getExtras().getString("text");
您可以参考下面的教程,希望对您有所帮助。

谢谢,但是DateRangeClass不是一个活动,它是一个类。谢谢,在我的项目中,只有一个活动是主要活动,所有其他此类DateRangeClass都不是活动。并且可以作为类而不是活动使用。如果您想要与ui相关的操作,则可以使用这些活动、片段或alertdialouge中的任何一个。这在普通java类中是不可能的。由于android widget无法绑定到它们。感谢CodingRat的回复。如果我的回答对您有所帮助,请接受并投票,这样它也可以帮助其他人:)