Ivanicop
28/04/14, 15:55:46
Hola! Tengo este TabsPagerAdapter:
public class TabsPagerAdapter extends FragmentPagerAdapter {
public TabsPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int index) {
switch (index) {
case 0:
// Top Rated fragment activity
return new InformacionFragment();
case 1:
// Games fragment activity
return new ProductosFragment();
case 2:
// Movies fragment activity
return new MoviesFragment();
}
return null;
}
@Override
public int getCount() {
// get item count - equal to number of tabs
return 3;
}
}Que solo me deja llamar clases extendidas a Fragment, por lo que no puedo llamar a una clase ListFragment, asi que tengo un Fragment normal en el que quiero llamar al ListFragment, pero no se como hacerlo.
Este es el Fragment donde quiero incluir la ListFragment:
public class ProductosFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_productos, container, false);
}
}Y esta es la ListFragment que tiene que aparecer en el Fragment:
public class ConjuntaFragment extends ListFragment{
private ProgressDialog pDialog;
// JSON Node names
private static final String TAG_PRODUCTOS = "productos";
private static final String TAG_ID_LO = "id_lo";
private static final String TAG_ID_PRODUCTO = "idProducto";
private static final String TAG_NOMBRE_PRODUCTO = "NombreProducto";
// contacts JSONArray
JSONArray productos = null;
// Hashmap for ListView
ArrayList<HashMap<String, String>> productosList;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// getting intent data
Intent inem = getActivity().getIntent();
String id_lo = inem.getStringExtra(TAG_ID_LO);
super.onCreate(savedInstanceState);
getActivity().setContentView(R.layout.fragment_pro ductos);
new HttpAsyncTask().execute("http://www.forotek.net/androidapp/conjunta.php?id="+id_lo);
productosList = new ArrayList<HashMap<String, String>>();
ListView lv2 = getListView();
// Listview on item click listener
lv2.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// getting values from selected ListItem
String id_producto = ((TextView) view.findViewById(R.id.id_producto))
.getText().toString();
// Starting single contact activity
Intent in2 = new Intent(getActivity().getApplicationContext(),
ConjuntaFragment.class);
in2.putExtra(TAG_ID_PRODUCTO, id_producto);
startActivity(in2);
}
});
// Calling async task to get json
new GetProductos().execute();
return super.onCreateView(inflater,container,savedInstanc eState);
}
public class TabsPagerAdapter extends FragmentPagerAdapter {
public TabsPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int index) {
switch (index) {
case 0:
// Top Rated fragment activity
return new InformacionFragment();
case 1:
// Games fragment activity
return new ProductosFragment();
case 2:
// Movies fragment activity
return new MoviesFragment();
}
return null;
}
@Override
public int getCount() {
// get item count - equal to number of tabs
return 3;
}
}Que solo me deja llamar clases extendidas a Fragment, por lo que no puedo llamar a una clase ListFragment, asi que tengo un Fragment normal en el que quiero llamar al ListFragment, pero no se como hacerlo.
Este es el Fragment donde quiero incluir la ListFragment:
public class ProductosFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_productos, container, false);
}
}Y esta es la ListFragment que tiene que aparecer en el Fragment:
public class ConjuntaFragment extends ListFragment{
private ProgressDialog pDialog;
// JSON Node names
private static final String TAG_PRODUCTOS = "productos";
private static final String TAG_ID_LO = "id_lo";
private static final String TAG_ID_PRODUCTO = "idProducto";
private static final String TAG_NOMBRE_PRODUCTO = "NombreProducto";
// contacts JSONArray
JSONArray productos = null;
// Hashmap for ListView
ArrayList<HashMap<String, String>> productosList;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// getting intent data
Intent inem = getActivity().getIntent();
String id_lo = inem.getStringExtra(TAG_ID_LO);
super.onCreate(savedInstanceState);
getActivity().setContentView(R.layout.fragment_pro ductos);
new HttpAsyncTask().execute("http://www.forotek.net/androidapp/conjunta.php?id="+id_lo);
productosList = new ArrayList<HashMap<String, String>>();
ListView lv2 = getListView();
// Listview on item click listener
lv2.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// getting values from selected ListItem
String id_producto = ((TextView) view.findViewById(R.id.id_producto))
.getText().toString();
// Starting single contact activity
Intent in2 = new Intent(getActivity().getApplicationContext(),
ConjuntaFragment.class);
in2.putExtra(TAG_ID_PRODUCTO, id_producto);
startActivity(in2);
}
});
// Calling async task to get json
new GetProductos().execute();
return super.onCreateView(inflater,container,savedInstanc eState);
}