列表视图项目打开 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);
}
});
当我点击 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);
}
});