我有一个带有多种类型的对象项的ListView(示例:人1,人2,人3,动物1,动物2,动物3,运输1 ,运输2,运输3),我想在点击ListView item
时显示其他活动的项目详细信息,我尝试使用switch-case
进行,但它无效。非常感谢所有人的支持。
这是MainActivity
package com.training.trinhlk.exercise_8;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
import com.training.trinhlk.exercise_8.adapter.RandomListAdapter;
import com.training.trinhlk.exercise_8.entity.Animal;
import com.training.trinhlk.exercise_8.entity.ItemModel;
import com.training.trinhlk.exercise_8.entity.Person;
import com.training.trinhlk.exercise_8.entity.Transport;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class MainActivity extends AppCompatActivity {
private List<ItemModel> listItemModel;
private ArrayList<ItemModel> list;
private ListView lvItem;
ImageView ivPhoto, ivIcon;
TextView tvName, tvAge;
private String [] name;
private String [] imgUrl;
private int [] age;
private int select;
RandomListAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
init();
fillData();
handleEvent();
}
public void init() {
lvItem = (ListView) findViewById(R.id.lv_random_item);
ivPhoto = (ImageView) findViewById(R.id.iv_photo);
tvName = (TextView) findViewById(R.id.tv_name);
tvAge = (TextView) findViewById(R.id.tv_age);
ivIcon = (ImageView) findViewById(R.id.iv_icon);
listItemModel = new ArrayList<>();
}
public void fillData() {
listItemModel = getListData();
adapter = new RandomListAdapter(this,list);
lvItem.setAdapter(adapter);
}
public void handleEvent () {
lvItem.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
select = position;
ItemModel item = (ItemModel) lvItem.getItemAtPosition(position);
int value = item.getIcon();
switch (value) {
case 0: {
Intent personIntent = new Intent(MainActivity.this, EditPersonActivity.class);
startActivityForResult(personIntent, 0);
}
break;
case R.drawable.like: {
Intent animalIntent = new Intent(MainActivity.this, EditAnimalActivity.class);
startActivityForResult(animalIntent, 1);
}
break;
case R.drawable.star: {
Intent transportIntent = new Intent(MainActivity.this, EditTransportActivity.class);
startActivityForResult(transportIntent, 2);
}
break;
}
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
ItemModel item = (ItemModel) lvItem.getItemAtPosition(select);
switch (requestCode) {
case 0: {
Person person = new Person();
String personName = data.getStringExtra("Name");
item.setName(personName);
person.setName(personName);
String job = data.getStringExtra("Job");
person.setJob(job);
String personMove = data.getStringExtra("Move");
item.setMove(personMove);
person.setMove(personMove);
adapter.notifyDataSetChanged();
}
break;
case 1: {
Animal animal = new Animal();
String animalName = data.getStringExtra("Name");
item.setName(animalName);
String animalFeed = data.getStringExtra("Feed");
animal.setFeed(animalFeed);
String animalMove = data.getStringExtra("Move");
item.setMove(animalMove);
adapter.notifyDataSetChanged();
}
break;
case 2: {
Transport transport = new Transport();
String tsName = data.getStringExtra("Name");
item.setName(tsName);
transport.setName(tsName);
String tsFuel = data.getStringExtra("Fuel");
transport.setFuel(tsFuel);
String tsMove = data.getStringExtra("Move");
item.setMove(tsMove);
transport.setMove(tsMove);
adapter.notifyDataSetChanged();
}
break;
}
}
private ArrayList<ItemModel> getListData () {
list = new ArrayList<ItemModel>();
imgUrl = getResources().getStringArray(R.array.image_url);
name = getResources().getStringArray(R.array.name);
age = getResources().getIntArray(R.array.age);
for(int i = 0; i < imgUrl.length; i++) {
ItemModel item = new ItemModel();
item.setImgURL(imgUrl[i]);
item.setName(name[i]);
item.setAge(age[i]);
item.setIcon(i);
list.add(item);
}
Collections.shuffle(list);
return list;
}
}
这是另一项显示项目详情的活动
package com.training.trinhlk.exercise_8;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.TextView;
/**
* Created by TRINH LK on 22/06/2016.
*/
public class EditPersonActivity extends AppCompatActivity{
ImageView ivPerson;
EditText etName, etJob, etMove;
TextView tvAge;
Button btnConfirm;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.edit_item_person);
initView();
getData();
}
public void initView() {
ivPerson = (ImageView) findViewById(R.id.iv_photo_person);
etName = (EditText) findViewById(R.id.et_name_person);
tvAge = (TextView) findViewById(R.id.tv_age_person);
etJob = (EditText) findViewById(R.id.et_job_person);
etMove = (EditText) findViewById(R.id.et_move_person);
btnConfirm = (Button) findViewById(R.id.btn_confirm);
}
public void getData(){
btnConfirm.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent personIntent = new Intent();
String name = etName.getText().toString();
personIntent.putExtra("Name",name);
String job = etJob.getText().toString();
personIntent.putExtra("Job",job);
String move = etMove.getText().toString();
personIntent.putExtra("Move", move);
setResult(0, personIntent);
finish();
}
});
}
}
编辑:这是logcat
06-23 11:03:26.937 2362-2362/com.training.trinhlk.exercise_8 E/dalvikvm: Could not find class 'android.os.PersistableBundle', referenced from method com.training.trinhlk.exercise_8.MainActivity.access$super
06-23 11:03:26.937 2362-2362/com.training.trinhlk.exercise_8 E/dalvikvm: Could not find class 'android.os.PersistableBundle', referenced from method com.training.trinhlk.exercise_8.MainActivity.access$super
06-23 11:03:26.947 2362-2362/com.training.trinhlk.exercise_8 E/dalvikvm: Could not find class 'android.media.session.MediaController', referenced from method com.training.trinhlk.exercise_8.MainActivity.access$super
06-23 11:03:26.947 2362-2362/com.training.trinhlk.exercise_8 E/dalvikvm: Could not find class 'android.widget.Toolbar', referenced from method com.training.trinhlk.exercise_8.MainActivity.access$super
06-23 11:03:26.957 2362-2362/com.training.trinhlk.exercise_8 E/dalvikvm: Could not find class 'android.app.ActivityManager$TaskDescription', referenced from method com.training.trinhlk.exercise_8.MainActivity.access$super
06-23 11:03:26.967 2362-2362/com.training.trinhlk.exercise_8 E/dalvikvm: Could not find class 'android.app.SharedElementCallback', referenced from method com.training.trinhlk.exercise_8.MainActivity.access$super
06-23 11:03:26.967 2362-2362/com.training.trinhlk.exercise_8 E/dalvikvm: Could not find class 'android.os.PersistableBundle', referenced from method com.training.trinhlk.exercise_8.MainActivity.access$super
06-23 11:03:26.977 2362-2362/com.training.trinhlk.exercise_8 E/dalvikvm: Could not find class 'android.app.SharedElementCallback', referenced from method com.training.trinhlk.exercise_8.MainActivity.access$super
06-23 11:03:26.987 2362-2362/com.training.trinhlk.exercise_8 E/dalvikvm: Could not find class 'android.app.assist.AssistContent', referenced from method com.training.trinhlk.exercise_8.MainActivity.access$super
06-23 11:03:26.987 2362-2362/com.training.trinhlk.exercise_8 E/dalvikvm: Could not find class 'android.view.SearchEvent', referenced from method com.training.trinhlk.exercise_8.MainActivity.access$super
06-23 11:03:26.997 2362-2362/com.training.trinhlk.exercise_8 E/dalvikvm: Could not find class 'android.os.PersistableBundle', referenced from method com.training.trinhlk.exercise_8.MainActivity.access$super
06-23 11:03:31.882 2362-2362/com.training.trinhlk.exercise_8 E/dalvikvm: Could not find class 'android.os.PersistableBundle', referenced from method com.training.trinhlk.exercise_8.EditPersonActivity.access$super
06-23 11:03:31.882 2362-2362/com.training.trinhlk.exercise_8 E/dalvikvm: Could not find class 'android.os.PersistableBundle', referenced from method com.training.trinhlk.exercise_8.EditPersonActivity.access$super
06-23 11:03:31.882 2362-2362/com.training.trinhlk.exercise_8 E/dalvikvm: Could not find class 'android.media.session.MediaController', referenced from method com.training.trinhlk.exercise_8.EditPersonActivity.access$super
06-23 11:03:31.882 2362-2362/com.training.trinhlk.exercise_8 E/dalvikvm: Could not find class 'android.widget.Toolbar', referenced from method com.training.trinhlk.exercise_8.EditPersonActivity.access$super
06-23 11:03:31.882 2362-2362/com.training.trinhlk.exercise_8 E/dalvikvm: Could not find class 'android.app.ActivityManager$TaskDescription', referenced from method com.training.trinhlk.exercise_8.EditPersonActivity.access$super
06-23 11:03:31.892 2362-2362/com.training.trinhlk.exercise_8 E/dalvikvm: Could not find class 'android.app.SharedElementCallback', referenced from method com.training.trinhlk.exercise_8.EditPersonActivity.access$super
06-23 11:03:31.892 2362-2362/com.training.trinhlk.exercise_8 E/dalvikvm: Could not find class 'android.os.PersistableBundle', referenced from method com.training.trinhlk.exercise_8.EditPersonActivity.access$super
06-23 11:03:31.902 2362-2362/com.training.trinhlk.exercise_8 E/dalvikvm: Could not find class 'android.app.SharedElementCallback', referenced from method com.training.trinhlk.exercise_8.EditPersonActivity.access$super
06-23 11:03:31.912 2362-2362/com.training.trinhlk.exercise_8 E/dalvikvm: Could not find class 'android.app.assist.AssistContent', referenced from method com.training.trinhlk.exercise_8.EditPersonActivity.access$super
06-23 11:03:31.912 2362-2362/com.training.trinhlk.exercise_8 E/dalvikvm: Could not find class 'android.view.SearchEvent', referenced from method com.training.trinhlk.exercise_8.EditPersonActivity.access$super
06-23 11:03:31.912 2362-2362/com.training.trinhlk.exercise_8 E/dalvikvm: Could not find class 'android.os.PersistableBundle', referenced from method com.training.trinhlk.exercise_8.EditPersonActivity.access$super
06-23 11:14:36.550 12478-12478/com.training.trinhlk.exercise_8 E/dalvikvm: Could not find class 'android.os.PersistableBundle', referenced from method com.training.trinhlk.exercise_8.MainActivity.access$super
06-23 11:14:36.550 12478-12478/com.training.trinhlk.exercise_8 E/dalvikvm: Could not find class 'android.os.PersistableBundle', referenced from method com.training.trinhlk.exercise_8.MainActivity.access$super
06-23 11:14:36.560 12478-12478/com.training.trinhlk.exercise_8 E/dalvikvm: Could not find class 'android.media.session.MediaController', referenced from method com.training.trinhlk.exercise_8.MainActivity.access$super
06-23 11:14:36.560 12478-12478/com.training.trinhlk.exercise_8 E/dalvikvm: Could not find class 'android.widget.Toolbar', referenced from method com.training.trinhlk.exercise_8.MainActivity.access$super
06-23 11:14:36.560 12478-12478/com.training.trinhlk.exercise_8 E/dalvikvm: Could not find class 'android.app.ActivityManager$TaskDescription', referenced from method com.training.trinhlk.exercise_8.MainActivity.access$super
06-23 11:14:36.570 12478-12478/com.training.trinhlk.exercise_8 E/dalvikvm: Could not find class 'android.app.SharedElementCallback', referenced from method com.training.trinhlk.exercise_8.MainActivity.access$super
06-23 11:14:36.570 12478-12478/com.training.trinhlk.exercise_8 E/dalvikvm: Could not find class 'android.os.PersistableBundle', referenced from method com.training.trinhlk.exercise_8.MainActivity.access$super
06-23 11:14:36.580 12478-12478/com.training.trinhlk.exercise_8 E/dalvikvm: Could not find class 'android.app.SharedElementCallback', referenced from method com.training.trinhlk.exercise_8.MainActivity.access$super
06-23 11:14:36.580 12478-12478/com.training.trinhlk.exercise_8 E/dalvikvm: Could not find class 'android.app.assist.AssistContent', referenced from method com.training.trinhlk.exercise_8.MainActivity.access$super
06-23 11:14:36.590 12478-12478/com.training.trinhlk.exercise_8 E/dalvikvm: Could not find class 'android.view.SearchEvent', referenced from method com.training.trinhlk.exercise_8.MainActivity.access$super
06-23 11:14:36.590 12478-12478/com.training.trinhlk.exercise_8 E/dalvikvm: Could not find class 'android.os.PersistableBundle', referenced from method com.training.trinhlk.exercise_8.MainActivity.access$super
06-23 11:15:01.354 12478-12478/com.training.trinhlk.exercise_8 E/dalvikvm: Could not find class 'android.os.PersistableBundle', referenced from method com.training.trinhlk.exercise_8.EditPersonActivity.access$super
06-23 11:15:01.354 12478-12478/com.training.trinhlk.exercise_8 E/dalvikvm: Could not find class 'android.os.PersistableBundle', referenced from method com.training.trinhlk.exercise_8.EditPersonActivity.access$super
06-23 11:15:01.354 12478-12478/com.training.trinhlk.exercise_8 E/dalvikvm: Could not find class 'android.media.session.MediaController', referenced from method com.training.trinhlk.exercise_8.EditPersonActivity.access$super
06-23 11:15:01.364 12478-12478/com.training.trinhlk.exercise_8 E/dalvikvm: Could not find class 'android.widget.Toolbar', referenced from method com.training.trinhlk.exercise_8.EditPersonActivity.access$super
06-23 11:15:01.364 12478-12478/com.training.trinhlk.exercise_8 E/dalvikvm: Could not find class 'android.app.ActivityManager$TaskDescription', referenced from method com.training.trinhlk.exercise_8.EditPersonActivity.access$super
06-23 11:15:01.374 12478-12478/com.training.trinhlk.exercise_8 E/dalvikvm: Could not find class 'android.app.SharedElementCallback', referenced from method com.training.trinhlk.exercise_8.EditPersonActivity.access$super
06-23 11:15:01.374 12478-12478/com.training.trinhlk.exercise_8 E/dalvikvm: Could not find class 'android.os.PersistableBundle', referenced from method com.training.trinhlk.exercise_8.EditPersonActivity.access$super
06-23 11:15:01.384 12478-12478/com.training.trinhlk.exercise_8 E/dalvikvm: Could not find class 'android.app.SharedElementCallback', referenced from method com.training.trinhlk.exercise_8.EditPersonActivity.access$super
06-23 11:15:01.394 12478-12478/com.training.trinhlk.exercise_8 E/dalvikvm: Could not find class 'android.app.assist.AssistContent', referenced from method com.training.trinhlk.exercise_8.EditPersonActivity.access$super
06-23 11:15:01.394 12478-12478/com.training.trinhlk.exercise_8 E/dalvikvm: Could not find class 'android.view.SearchEvent', referenced from method com.training.trinhlk.exercise_8.EditPersonActivity.access$super
06-23 11:15:01.404 12478-12478/com.training.trinhlk.exercise_8 E/dalvikvm: Could not find class 'android.os.PersistableBundle', referenced from method com.training.trinhlk.exercise_8.EditPersonActivity.access$super
06-23 11:18:25.163 16601-16601/com.training.trinhlk.exercise_8 E/dalvikvm: Could not find class 'android.os.PersistableBundle', referenced from method com.training.trinhlk.exercise_8.MainActivity.access$super
06-23 11:18:25.163 16601-16601/com.training.trinhlk.exercise_8 E/dalvikvm: Could not find class 'android.os.PersistableBundle', referenced from method com.training.trinhlk.exercise_8.MainActivity.access$super
06-23 11:18:25.163 16601-16601/com.training.trinhlk.exercise_8 E/dalvikvm: Could not find class 'android.media.session.MediaController', referenced from method com.training.trinhlk.exercise_8.MainActivity.access$super
06-23 11:18:25.163 16601-16601/com.training.trinhlk.exercise_8 E/dalvikvm: Could not find class 'android.widget.Toolbar', referenced from method com.training.trinhlk.exercise_8.MainActivity.access$super
06-23 11:18:25.173 16601-16601/com.training.trinhlk.exercise_8 E/dalvikvm: Could not find class 'android.app.ActivityManager$TaskDescription', referenced from method com.training.trinhlk.exercise_8.MainActivity.access$super
06-23 11:18:25.183 16601-16601/com.training.trinhlk.exercise_8 E/dalvikvm: Could not find class 'android.app.SharedElementCallback', referenced from method com.training.trinhlk.exercise_8.MainActivity.access$super
06-23 11:18:25.183 16601-16601/com.training.trinhlk.exercise_8 E/dalvikvm: Could not find class 'android.os.PersistableBundle', referenced from method com.training.trinhlk.exercise_8.MainActivity.access$super
06-23 11:18:25.193 16601-16601/com.training.trinhlk.exercise_8 E/dalvikvm: Could not find class 'android.app.SharedElementCallback', referenced from method com.training.trinhlk.exercise_8.MainActivity.access$super
06-23 11:18:25.193 16601-16601/com.training.trinhlk.exercise_8 E/dalvikvm: Could not find class 'android.app.assist.AssistContent', referenced from method com.training.trinhlk.exercise_8.MainActivity.access$super
06-23 11:18:25.193 16601-16601/com.training.trinhlk.exercise_8 E/dalvikvm: Could not find class 'android.view.SearchEvent', referenced from method com.training.trinhlk.exercise_8.MainActivity.access$super
06-23 11:18:25.203 16601-16601/com.training.trinhlk.exercise_8 E/dalvikvm: Could not find class 'android.os.PersistableBundle', referenced from method com.training.trinhlk.exercise_8.MainActivity.access$super
06-23 11:18:53.201 16601-16601/com.training.trinhlk.exercise_8 E/dalvikvm: Could not find class 'android.os.PersistableBundle', referenced from method com.training.trinhlk.exercise_8.EditPersonActivity.access$super
06-23 11:18:53.211 16601-16601/com.training.trinhlk.exercise_8 E/dalvikvm: Could not find class 'android.os.PersistableBundle', referenced from method com.training.trinhlk.exercise_8.EditPersonActivity.access$super
06-23 11:18:53.211 16601-16601/com.training.trinhlk.exercise_8 E/dalvikvm: Could not find class 'android.media.session.MediaController', referenced from method com.training.trinhlk.exercise_8.EditPersonActivity.access$super
06-23 11:18:53.211 16601-16601/com.training.trinhlk.exercise_8 E/dalvikvm: Could not find class 'android.widget.Toolbar', referenced from method com.training.trinhlk.exercise_8.EditPersonActivity.access$super
06-23 11:18:53.221 16601-16601/com.training.trinhlk.exercise_8 E/dalvikvm: Could not find class 'android.app.ActivityManager$TaskDescription', referenced from method com.training.trinhlk.exercise_8.EditPersonActivity.access$super
06-23 11:18:53.221 16601-16601/com.training.trinhlk.exercise_8 E/dalvikvm: Could not find class 'android.app.SharedElementCallback', referenced from method com.training.trinhlk.exercise_8.EditPersonActivity.access$super
06-23 11:18:53.221 16601-16601/com.training.trinhlk.exercise_8 E/dalvikvm: Could not find class 'android.os.PersistableBundle', referenced from method com.training.trinhlk.exercise_8.EditPersonActivity.access$super
06-23 11:18:53.231 16601-16601/com.training.trinhlk.exercise_8 E/dalvikvm: Could not find class 'android.app.SharedElementCallback', referenced from method com.training.trinhlk.exercise_8.EditPersonActivity.access$super
06-23 11:18:53.241 16601-16601/com.training.trinhlk.exercise_8 E/dalvikvm: Could not find class 'android.app.assist.AssistContent', referenced from method com.training.trinhlk.exercise_8.EditPersonActivity.access$super
06-23 11:18:53.241 16601-16601/com.training.trinhlk.exercise_8 E/dalvikvm: Could not find class 'android.view.SearchEvent', referenced from method com.training.trinhlk.exercise_8.EditPersonActivity.access$super
06-23 11:18:53.251 16601-16601/com.training.trinhlk.exercise_8 E/dalvikvm: Could not find class 'android.os.PersistableBundle', referenced from method com.training.trinhlk.exercise_8.EditPersonActivity.access$super
更新:我在此处定义了方法getIcon
:
package com.training.trinhlk.exercise_8.entity;
/**
* Created by TRINH LK on 07/06/2016.
*/
public class ItemModel {
private String imgURL;
private String name;
private int age;
private String move;
private int icon;
public ItemModel() {
}
public String getImgURL() {
return imgURL;
}
public void setImgURL(String imgURL) {
this.imgURL = imgURL;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getMove() {
return move;
}
public void setMove(String move) {
this.move = move;
}
public int getIcon() {
return icon;
}
public void setIcon(int icon) {
this.icon = icon;
}
}
答案 0 :(得分:0)
您是否可以尝试在listview的onItemClickListener方法内而不是值中切换位置。
答案 1 :(得分:0)
试试这个,
替换
ItemModel item = (ItemModel) lvItem.getItemAtPosition(position);
。通过强>
ItemModel item = list.get(position);