java - 如何将数据从 ListView 传递到另一个 Activity 页面?

标签 java android listview

这里是新手问题。所以我试图将标题从 1stPage listview 传递到 2ndPage EditText,这意味着如果我单击 1stPage 上的 Title1,2ndPage editText 也会显示 Title1。我学会了如何投入额外的 Intent ,但我不知道如何从 ListView 中获取数据。 tqvm 处于高级状态。

1.MainActivity.java

public class MainActivity extends AppCompatActivity{

ListView l1;
String[] t1={"TITLE 1","TITLE 2"};
String[] d1={"Detail 1","Detail 2"};
String[] s1={"Content 1", "Content 2"};

TextView textView;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    textView = (TextView) findViewById(R.id.title);

    l1=(ListView)findViewById(R.id.list);
    l1.setAdapter(new dataListAdapter(t1, d1, s1));


}

class dataListAdapter extends BaseAdapter {
    String[] Title, Detail, Content;

    dataListAdapter() {
        Title = null;
        Detail = null;
        Content=null;
    }

    public dataListAdapter(String[] text, String[] text1, String[] text3) {
        Title = text;
        Detail = text1;
        Content = text3;

    }

    public int getCount() {
        // TODO Auto-generated method stub
        return Title.length;
    }

    public Object getItem(int arg0) {
        // TODO Auto-generated method stub
        return null;
    }

    public long getItemId(int position) {
        // TODO Auto-generated method stub
        return position;
    }

    public View getView(int position, View convertView, ViewGroup parent) {

        LayoutInflater inflater = getLayoutInflater();
        View row;
        row = inflater.inflate(R.layout.custom, parent, false);
        final TextView title, detail, detail2;
        title = (TextView) row.findViewById(R.id.title);
        detail = (TextView) row.findViewById(R.id.detail);
        detail2 = (TextView) row.findViewById(R.id.detail2);
        title.setText(Title[position]);
        detail.setText(Detail[position]);
        detail2.setText(Content[position]);

        l1.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

                String selected = title.getText().toString();
                Intent i = new Intent(getApplicationContext(), Main2Activity.class);
                i.putExtra("name", selected);
                startActivity(i);
            }
        });

        return (row);
    }

}


}

2.Main2Activity.java

公共(public)类 Main2Activity 扩展 AppCompatActivity {

EditText editText;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main2);

    editText = (EditText)findViewById(R.id.et);

    Intent in = getIntent();
    String name = in.getStringExtra(("name"));
    editText.setText(name);
}

}

最佳答案

您应该在 MainActivity 行之后声明此方法

    l1=(ListView)findViewById(R.id.list);
    l1.setAdapter(new dataListAdapter(t1, d1, s1));

    l1.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

            String selected = t1[position];
            Intent i = new Intent(getApplicationContext(), Main2Activity.class);
            i.putExtra("name", selected);
            startActivity(i);
        }
    });

并从dataListAdapter类中删除

在另一个 Activity 中,使用以下方法获取标题

Bundle extras = getIntent().getExtras();
String name = extras.getString("name");
editText.setText(name);

希望它能成功。

关于java - 如何将数据从 ListView 传递到另一个 Activity 页面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35521126/

相关文章:

android - EditText inputType 特例只获取数字和一个特殊符号

android - 如何在 Android 上动态地将元素添加到 ListView?

java - Android - 单击按钮获取 ListView 中的 EditText 值的总和

java - 如何将 java 代码嵌入到批处理脚本中?是否可以创建 .java/.bat 混合体?

java - 如何在Spring Security中的自定义PasswordEncoder中获取用户名?

java - 如何从jsp更新查询?

android - 如何在Android上执行 "help"Linux命令?

java - IntelliJ IDEA,maven项目不自动导入依赖

Android:从线程访问ui元素

android - 如何合并两个 ListView 的数据