【发布时间】:2016-03-23 00:02:20
【问题描述】:
我有一个活动,我们称之为 Activity 1,我们将有一个由 Player objetcs 组成的 ListView。当您单击 ListView_item(在 Player 上)时,一个新的活动开始,我们称之为 Activity 2。我想要的是:
活动 1 向活动 2 发送玩家的姓名和玩家的种族。在活动 2 中,用户可以编辑它(玩家的姓名和玩家的种族),当用户单击确认活动 2 时,即使用户没有编辑它,也会将玩家的姓名和玩家的种族发送到活动 1(在这种情况下,它会发送之前 Activity 1 已发送到 Activity 2)。
问题是当我想使用 startActivityForResult 我进入 ListViewAdapter 类并使用 context.start... startActivityForResult 没有出现。
public class AdaptadorJugadores extends BaseAdapter implements ListAdapter {
private ArrayList<Jugador> list = new ArrayList<Jugador>();
private Context context;
public AdaptadorJugadores(ArrayList<Jugador> list, Context context) {
this.list = list;
this.context = context;
}
@Override
public int getCount() {
return list.size();
}
@Override
public Object getItem(int pos) {
return list.get(pos);
}
@Override
public long getItemId(int pos) {
return 0;
//just return 0 if your list items do not have an Id variable.
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
View view = convertView;
if (view == null) {
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = inflater.inflate(R.layout.item_lista_jugadores, null);
}
//Handle TextView and display string from your list
TextView TextoNombreJugador = (TextView)view.findViewById(R.id.etNombreJugador);
TextoNombreJugador.setText(list.get(position).getNombre());
if (list.get(position).getGenero() == "Hombre"){
TextoNombreJugador.setCompoundDrawablesWithIntrinsicBounds(R.drawable.ic_face_black_24dp, 0, 0, 0);
}else{
TextoNombreJugador.setCompoundDrawablesWithIntrinsicBounds(R.drawable.ic_face_black_girl24dp, 0, 0, 0);
}
//Handle buttons and add onClickListeners
Button deleteBtn = (Button)view.findViewById(R.id.btEliminarJugador);
deleteBtn.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
//do something
list.remove(position); //or some other task
notifyDataSetChanged();
}
});
/*addBtn.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
//do something
notifyDataSetChanged();
}
});*/
view.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
// Send single item click data to SingleItemView Class
Intent intent = new Intent(context, VistaJugador.class);
intent.putExtra("Nombre",(list.get(position).getNombre()));
intent.putExtra("Genero",(list.get(position)).getGenero());
// Start SingleItemView Class
}
});
return view;
}
}
【问题讨论】:
-
您可以通过使用 Activity 进行强制转换来做到这一点,但您不会在适配器内获得 onActivityResult(),因此@Francesc 的答案是更好的用户方法。
标签: android listview android-intent listadapter