列表视图项目打开 activity

listview item open activity

当我点击 activity 中的项目时出现错误,它们都向我显示与他的名字相同的字符串:"name_0"

点击打开的activity:

public void handle() {
    TextView var3 = (TextView) this.findViewById(R.id.name);
    TextView var2 = (TextView) this.findViewById(R.id.meaning);
    TextView var5 = (TextView) this.findViewById(R.id.proof);
    Intent var4 = this.getIntent();
    int var1 = var4.getIntExtra("name", 0);
    switch (var1) {
    case 0:
        var3.setText(R.string.name_0);
        var2.setText(R.string.meaning_0);
        var5.setText(R.string.proof_0);
        break;
    case 1:
        var3.setText(R.string.name_1);
        var2.setText(R.string.meaning_1);
        var5.setText(R.string.proof_1);
        break;
    case 2:
        var3.setText(R.string.name_2);
        var2.setText(R.string.meaning_2);
        var5.setText(R.string.proof_2);
        break;    

            }
}    

和点击打开项目的activity:

String[] values = { "test", "list", "ok", "bon" };

protected void onCreate(Bundle var1) {
    super.onCreate(var1);
    this.setContentView(R.layout.activity_main);
    this.listView = (ListView) this.findViewById(R.id.list);
    listView.setAdapter(new ArrayAdapter<String>(this, R.layout.listview_item,
            R.id.textView_list, values));
    listView.setOnItemClickListener(new OnItemClickListener() {
           @Override
           public void onItemClick(AdapterView<?> adapter, View view, int position, long arg) {
              Intent Start = new Intent(MainActivity.this, Asma2Ma3anihaActivity.class);
               startActivity(Start);
           } 
        });

问题是您没有发送点击项目的位置

Intent start = new Intent(MainActivity.this, Asma2Ma3anihaActivity.class);
start.putExtra("name", position);
startActivity(start);

应该可以。

你总是得到 0,因为你在这里设置 0 (var4.getIntExtra("name", 0);) 作为 "name" 键缺失时的默认值。

当您在 setOnItemClickListener 中创建 Intent 时,您永远不会在 Intent 上设置额外的 'name',因此当您尝试在 'handle()' 方法中检索 int 时,您将始终得到 0。

在执行 'startActivity' 之前,您必须在 intent 上设置额外的内容。

Intent startIntent = new Intent(MainActivity.this, Asma2Ma3anihaActivity.class);
startIntent.putExtra("name", position);
startActivity(startIntent);

为了从项目中获取文本,您需要从从 onitemclicklistener 获取的视图中获取值

ie11=]

     listView.setOnItemClickListener(new OnItemClickListener() {
          @Override
          public void onItemClick(AdapterView<?> adapter, View view, int position, long arg) {
              String text = ((TextView)view.findViewById(R.id.name)).getText();
              Intent Start = new Intent(MainActivity.this, Asma2Ma3anihaActivity.class).putExtra("name",text);
              startActivity(Start);
       } 
    });