Tengo un ViewPager
y está usando un FragmentAdapter
para mostrar varios fragmentos del mismo tipo. Aunque estos Fragmentos están básicamente instanciados de la misma clase, están usando un ListView
para mostrar información diferente. (Obviamente, el ListView
está siendo liberado por un ArrayAdapter
).
También se está ejecutando un servicio en segundo plano que constantemente recibe datos de Internet. Quiero poder actualizar un Fragmento específico en el ViewPager
cuando mi servicio en segundo plano me haya notificado un evento específico.
¿Cómo puedo hacer eso? ¡Un fragmento de código sería muy apreciado!ViewPager Actividad para notificar un Fragmento de un evento específico
(Por cierto, tengo sierra this similar question pero no tengo ni idea de cómo utilizar su sugerencia!)
Para hacer todo más sencillo: Mi actividad con el ViewPager:
[Fragmento 0] [Fragmento 1] [Fragmento 2]
el servicio fondo me dice (a través de una emisión) para actualizar la ListView
en Fragmento 1.
EDIT: Éstos son los códigos de muestra:
public class ChatWindowPager extends FragmentActivity
{
private ViewPager mViewPager = null;
private ChatFragmentAdapter mAdapter = null;
@Override
protected void onCreate(final Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.chat_window_pager);
this.mViewPager = (ViewPager) findViewById(R.id.chatPager);
this.mAdapter = new ChatFragmentAdapter(getSupportFragmentManager());
this.mViewPager.setAdapter(this.mAdapter);
.
.
.
}
class ChatFragmentAdapter extends FragmentPagerAdapter implements ViewProvider
{
public ChatFragmentAdapter(final FragmentManager fm)
{
super(fm);
}
@Override
public Fragment getItem(final int arg0)
{
String friendId = ..... // Some initializations
ChatWindowFragment f = ChatWindowFragment.newInstance(friendId);
return f;
}
@Override
public int getCount()
{
...
}
@Override
public View getView(final int position)
{
View v = getLayoutInflater().inflate(R.layout.tab_holder, null);
.
.
.
return v;
}
}
}
Ahora los fragmentos se define así:
public class ChatWindowFragment extends Fragment
{
public String friendId;
private ListView lv;
public static ChatWindowFragment newInstance(final String friendId)
{
ChatWindowFragment chatWindowFragment = new ChatWindowFragment();
Bundle bundle = new Bundle();
bundle.putString("friendId", friendId);
chatWindowFragment.setArguments(bundle);
return chatWindowFragment;
}
@Override
public void onCreate(final Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
this.friendId = getArguments().getString("friendId");
}
@Override
public View onCreateView(final LayoutInflater inflater, final ViewGroup container, final Bundle savedInstanceState)
{
View v = inflater.inflate(R.layout.chat_window, container, false);
this.friendId = getArguments().getString("friendId");
.
.
.
return v;
}
//The rest of the class
}
Como estoy usando un FragmentPagerAdapter
No veo cómo puedo establece la etiqueta de cada fragmento! (Obviamente, no estoy usando transacciones para agregar los fragmentos!)
EDIT 2: me gustaría saber si lo que estoy haciendo, es la forma correcta de manejar lo que yo quiero hacer .. ¡Cualquier otra solución también es bienvenida!
intenté con lo que sugerí .... –