我正在android studio开发一个小项目,我有一个listview,通过数组输入数据。但我需要的是当用户从列表中选择一些元素时,根据元素的位置加载另一个活动中的所有数据
发送数据的类(位置)
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_noticias);
mAdapter = new NoticiasAdapter(Noticias.this, mList);
setListAdapter(mAdapter);
}
public void onResume() {
super.onResume();
preencherlista();
mAdapter.notifyDataSetChanged();
}
@Override
public void onListItemClick(ListView l, View v, int position, long id) {
super.onListItemClick(l, v, position, id);
mList.get(position);
Intent intent = new Intent(getBaseContext(), NoticiasValor.class);
intent.putExtra("valor","position");
startActivity(intent);
}
public void preencherlista() {
mList.add(new NoticiasDados("Jose", "Maria"));
mList.add(new NoticiasDados("Maria","Alfredo"));
mList.add(new NoticiasDados("Luis","Sonia"));
}
}
接收并显示的类
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.noticas_valor_layout);
/*Intent mIntent = getIntent();
int intValue = mIntent.getIntExtra("valor",0);*/
int intValue= getIntent().getIntExtra("valor",0);
TextView a = (TextView) findViewById(R.id.txttitulo2);
a.setText(mList.get(intValue).getTitulo());
TextView b = (TextView) findViewById(R.id.txttexto2);
b.setText(mList.get(intValue).getTexto());
}
答案 0 :(得分:0)
在onListItemClick()
方法中,更改此代码:
mList.get(position);
Intent intent = new Intent(getBaseContext(), NoticiasValor.class);
intent.putExtra("valor","position");
startActivity(intent);
到此:
NoticiasDados item = mList.get(position);
Intent intent = new Intent(getBaseContext(), NoticiasValor.class);
intent.putExtra("valor",item);
startActivity(intent);
然后在接收活动中,更改此内容:
int intValue= getIntent().getIntExtra("valor",0);
到此:
NoticiasDados item = getIntent().getParcelableExtra("valor");
请注意,这要求您的NoticiasDados
类实现Parcelable
interface。如果还没有,您可以查看此内容以了解详情:How can I make my custom objects Parcelable?
答案 1 :(得分:0)
我修改了你的onListItemClick
方法,这样它就不会在意图中传递字符串“position”,而是传递变量i
,该变量包含用户点击位置的对象。
@Override
public void onListItemClick(ListView l, View v, int position, long id) {
super.onListItemClick(l, v, position, id);
NoticiasDados i = mList.get(position);
Intent intent = new Intent(getBaseContext(), NoticiasValor.class);
intent.putExtra("valor", i);
startActivity(intent);
}
我还修改了接收意图的类中的onCreate方法,以利用您在get
类中创建的NoticiasDados
方法。
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.noticas_valor_layout);
int intValue = getIntent();
NoticiasDados i = intValue.getSerializableExtra("valor");
TextView a = (TextView) findViewById(R.id.txttitulo2);
a.setText(i.getTitulo());
TextView b = (TextView) findViewById(R.id.txttexto2);
b.setText(i.getTexto());
}
另请确保您的NoticiasDados
课程implements Serializable