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

时间:2016-03-08 05:39:23

标签: android listview

尝试通过预定义的listView布局xmlsimple_list_item_single_choice获取已检查项目并选择项目然后设置另一项活动中的TextView文本时出现问题。  这是showMyUI方法,点击MainActivity

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);
        }
    });

我的DateRangeClass是

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();
            }

            });

 }

}

2 个答案:

答案 0 :(得分:0)

您还没有开始活动。

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

答案 1 :(得分:0)

将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");

您可以参考下面的教程,希望它有所帮助。 passing data to activity from listview