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
layoutsimple\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的回复。如果我的回答对您有所帮助,请接受并投票,这样它也可以帮助其他人:)