ビューア内で動作するフラグメントに送信するために、アダプタが自分のアクティビティから返すデータを取得する必要があります。バンドルを使用してビューページのフラグメントとアダプタのデータを共有する方法
これは私のアダプターで、それはニュース
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);
}
}
のためのタイトルと説明していくつかのカードを膨張させると、これは私が送るよ同時にviewpagerを作成したい私の活動でのfuctionですアダプタのリターン
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);
}
}
}
しかし、毎回私はそれは私にエラーを返す「arguments.putString」を使用してバンドル。アダプタから受け取ったデータと、Bundleが実際にどのように動作するのか、私はどのような ".put"を使用するべきかわからないので、私は混乱しています。
お手伝いできますか? ありがとう
アダプタをバンドル内にStringとして配置することはできません。 putStringメソッドは、バンドルにストリングを追加するためのメソッドです。あなたは正確に何を送ろうとしていますか?オブジェクトか単純な文字列ですか? –
FeedAdapterがフラグメントに返すカードビューを送信したいと思います。それはオブジェクトを返しますか? – mhkore
ビューを渡すべきではありません。それは悪い習慣です。おそらくカーソルで表されるデータをViewPagerに渡すことができます。どのようなデータがカーソルによって表されますか? –