Ich muss die Daten nehmen, die mein Adapter von meiner Aktivität zurückgibt, um es an ein Fragment zu senden, das in einem Viewpager arbeitet.Wie Bundle verwenden, um Daten von Adapter zu einem Fragment in Viewpager zu teilen
Das ist mein Adapter ist, bläht es einige Karten mit Titel und Beschreibungen für Nachrichten
public class FeedAdapter extends CursorAdapter {
/*
Etiqueta de Depuración
*/
private static final String TAG = FeedAdapter.class.getSimpleName();
/**
* View holder para evitar multiples llamadas de findViewById()
*/
static class ViewHolder {
TextView titulo;
TextView descripcion;
int tituloI;
int descripcionI;
}
public FeedAdapter(Context context, Cursor c, int flags) {
super(context, c, flags);
}
public View newView(Context context, Cursor cursor, ViewGroup parent) {
LayoutInflater inflater = LayoutInflater.from(parent.getContext());
View view = inflater.inflate(R.layout.item_layout, null, false);
ViewHolder vh = new ViewHolder();
// Almacenar referencias
vh.titulo = (TextView) view.findViewById(R.id.titulo);
vh.descripcion = (TextView) view.findViewById(R.id.descripcion);
// Setear indices
vh.tituloI = cursor.getColumnIndex(ScriptDatabase.ColumnEntradas.TITULO);
vh.descripcionI = cursor.getColumnIndex(ScriptDatabase.ColumnEntradas.DESCRIPCION);
view.setTag(vh);
return view;
}
public void bindView(View view, Context context, Cursor cursor) {
final ViewHolder vh = (ViewHolder) view.getTag();
// Setear el texto al titulo
vh.titulo.setText(cursor.getString(vh.tituloI));
// Obtener acceso a la descripción y su longitud
int ln = cursor.getString(vh.descripcionI).length();
String descripcion = cursor.getString(vh.descripcionI);
// Acortar descripción a 77 caracteres
vh.descripcion.setText(descripcion);
}
}
Und das ist das fuction in meiner Tätigkeit, wo ich die viewpager zugleich eine schicke ich erstellen möchten bundle mit der Rückkehr des Adapters
public class LoadData extends AsyncTask<Void, Void, Cursor> {
@Override
protected Cursor doInBackground(Void... params) {
// Carga inicial de registros
return FeedDatabase.getInstance(MainActivity.this).obtenerEntradas();
}
@Override
protected void onPostExecute(Cursor cursor) {
super.onPostExecute(cursor);
// Crear el adaptador
adapter = new FeedAdapter(
MainActivity.this,
cursor,
SimpleCursorAdapter.FLAG_REGISTER_CONTENT_OBSERVER);
// Relacionar la lista con el adaptador
Bundle arguments = new Bundle();
arguments.putString(adapter);
viewPagerAdapter = new ViewPagerAdapter(getSupportFragmentManager(), arguments);
viewPager.setAdapter(viewPagerAdapter);
}
}
}
Aber jedesmal, wenn ein ich benutze „arguments.putString“ es gibt mir eine Fehlermeldung. Ich bin verwirrt, weil ich nicht weiß, welche Art von ".put" ich mit den Daten verwenden soll, die ich vom Adapter erhalte und wie Bundle wirklich funktioniert.
Können Sie mir helfen? Danke
Sie können einen Adapter nicht als String in ein Bundle einfügen. Die putString-Methode dient zum Hinzufügen von Strings zu einem Bundle. Was genau willst du senden, ein Objekt oder eine einfache Zeichenfolge? –
Ich möchte die Kartenansicht senden, dass FeedAdapter zu dem Fragment zurückkehrt. Ist das ein Objekt? – mhkore
Sie sollten Ansichten nicht herumreichen. Es ist eine schlechte Übung. Sie könnten wahrscheinlich Daten, die durch den Cursor dargestellt werden, in den ViewPager übergeben. Welche Art von Daten wird durch den Cursor dargestellt? –