获取数组的元素位置

时间:2017-09-07 14:38:39

标签: android

我正在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());
}

2 个答案:

答案 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