Android:在另一个活动中将TextView数据从ListView传递到TextView

时间:2017-12-18 23:51:06

标签: android listview

我是Android新手,我如何从主活动中传递ListView中的TextView数据和图像,以便在另一个活动中设置TextView中的数据来查看它。 ListView侦听器上的此代码。

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

            Intent intent = new Intent(getApplicationContext(),SecondActivity.class);
            intent.putExtra("MobileName",adapter.getItem(position).toString());
            startActivity(intent);
        }
    });

这是我的适配器方法,

@Override
public Object getItem(int position) {
    return emps.get(position);
}

这是我想要显示数据的活动,

id = findViewById(R.id.textOne1);
name = findViewById(R.id.textTwo2);
id.setText(getIntent());
name.setText();

名称 id 是另一种布局中的TextView,我想从主要活动中的数据填充它, 如何从主活动中获取每个TextView的数据以设置 id name

这是我的适配器

public MyAdapter(List<Employee> emps,Context context){

    this.emps=emps;
    this.context=context;
    this.empFilters=emps;
}

@Override
public int getCount() {
    return emps.size();
}

@Override
public Object getItem(int position) {
    return emps.get(position);
}

@Override
public long getItemId(int position) {
    return position;
}

@ Override
public View getView(int position, View convertView, ViewGroup parent) {
  View myView=null;
    if (convertView==null) {
        LayoutInflater inflater = LayoutInflater.from(context);
         myView = inflater.inflate(R.layout.for_list_view, parent, false);
        ViewHolder vh=new ViewHolder();

        vh.idText=myView.findViewById(R.id.id);
        vh.nameText=myView.findViewById(R.id.name);
        vh.imageView=myView.findViewById(R.id.image);
        myView.setTag(vh);
    } else
       myView=convertView;


    Employee e=emps.get(position);
         ViewHolder vh = (ViewHolder)myView.getTag();

    vh.idText.setText(e.getId()+"");
    vh.nameText.setText(e.getName());
    vh.imageView.setImageResource(e.getImg());

    return myView;
}

2 个答案:

答案 0 :(得分:0)

你需要使用适当的方法和放置Extra时使用的密钥从Intent中获取额外的内容。

e.g。 name.setText(); (而不是id.setText(getIntent());

关于获取 ID 的信息不足,因此innerHTML将无法使用: -

答案 1 :(得分:0)

有多种方法可以执行此操作,具体取决于您声明数据对象的位置。 假设您有一个ListView中显示的数据对象列表。所以你的Activity类有: -

int[]

这是你的数据pojo: -

List<ListItemHolder> data = new ArrayList<>();
ListView lv;

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

            Intent intent = new Intent(getApplicationContext(),SecondActivity.class);
            intent.putExtra("MobileId", data.get(position).getId());
            intent.putExtra("MobileName", data.get(position).getName());

            startActivity(intent);
        }
    });

现在在第二个活动中,将代码更改为: -

class ListItemHolder{
    int id;
    String name;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

我目前无法访问Android Studio,因此您可能需要进行一些修改才能使其正常运行。