当我使用向下滚动时,我有问题刷新ListView
。我们需要更新我的适配器。我不知道怎么做。
public class VerProyectos extends ActionBarActivity {
private SearchView buscar;
int inicio = 0;
int fin = 10;
@SuppressLint("NewApi") @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//this.requestWindowFeature(Window.FEATURE_NO_TITLE); //Quitar la barra de titulo
setContentView(R.layout.activity_ver_proyectos);
ActionBar bar = getActionBar();
bar.setTitle("Ver Proyectos");
bar.setBackgroundDrawable(new ColorDrawable(Color.parseColor("#ffa120")));
listaProyectos = (ListView)findViewById(R.id.listaProyectos);
//adapterProyectos = new proyectosAdapter(VerProyectos.this, list);
addProyect(inicio, fin);
inicio += 10;
listaProyectos.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int pos,
long arg3) {
Intent irAInfoProyecto = new Intent(VerProyectos.this, InfoProyecto.class);
irAInfoProyecto.putExtra("tituloProyecto", datos[pos].getTitulo());
irAInfoProyecto.putExtra("descripcionProyecto", datos[pos].getDescripcion());
irAInfoProyecto.putExtra("totalProyecto", datos[pos].getTotal());
irAInfoProyecto.putExtra("invertirProyecto", datos[pos].getInvertido());
startActivity(irAInfoProyecto);
}
});
listaProyectos.setOnScrollListener(new OnScrollListener() {
private int visibleThereshold = 0;
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
// TODO Auto-generated method stub
// Realizamos la actualizacion cuando se detenga el Scroll,
// o sea, este en estado idle
if(scrollState == SCROLL_STATE_IDLE){
// Si el ultimo elemento + 1 es mayor o igual que el
// numero de elementos en la lista menos los que quedan
// fuera de la pantalla inicia la carga
if (listaProyectos.getLastVisiblePosition() == listaProyectos.getAdapter().getCount() - 1
&& listaProyectos.getChildAt(listaProyectos.getChildCount() - 1).getBottom() <= listaProyectos.getHeight()){
// Añado a la lista una footer view para indicarle al
// usuario que se estan cargando datos
addProyect(inicio, fin);
inicio += 10;
//listaProyectos.refreshDrawableState();
//adapterProyectos.notifyDataSetChanged();
}
}
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {
// TODO Auto-generated method stub
}
});
}
private void addProyect(final int principio, final int ultimo) {
final ProgressDialog pDialog = new ProgressDialog(VerProyectos.this);
final ConexionBBDD conexion = new ConexionBBDD();
pDialog.setIndeterminate(false);
pDialog.setCancelable(true);
pDialog.show();
pDialog.setContentView(R.layout.progress_dialog_personalizado);
final proyectosAdapter adapterProyectos = new proyectosAdapter(VerProyectos.this, list);
new Thread(new Runnable() {
public void run() {
datos = conexion.obtenerDatosProyecto(principio, ultimo);
if (datos != null){
for (int i=0 ; i<datos.length; i++){
list.add(new datosProyectos(datos[i].getTotal(), datos[i].getInvertido(), datos[i].getDesde(),
datos[i].getTitulo(), datos[i].getDescripcion(), datos[i].getDibujo(),
Integer.parseInt(datos[i].getTotal()), Integer.parseInt(datos[i].getInvertido())));
//adapterProyectos.notifyDataSetChanged();
}
//listaAux.add(list);
}
runOnUiThread(new Runnable() {
public void run() {
pDialog.dismiss();
int pos = listaProyectos.getCount() - 1;
// Inicializamos el adapter.
listaProyectos.setAdapter(adapterProyectos);
//listaProyectos.setSelection((listaProyectos.getCount() -12));
listaProyectos.setSelection(pos);
}
});
}
}).start();
}
@SuppressLint("NewApi") @Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.ver_proyectos, menu);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
public void onBackPressed() {
Intent irAMenuInversor = new Intent(this, MenuInversor.class);
startActivity(irAMenuInversor);
finish();
}
}
public class proyectosAdapter extends ArrayAdapter<datosProyectos> {
public proyectosAdapter(Context context, ArrayList<datosProyectos> datos) {
super(context, R.layout.cuadro_proyecto, datos);
// Guardamos los parámetros en variables de clase.
this.context = context;
this.datos = datos;
}
public View getView(int position, View convertView, ViewGroup parent) {
// En primer lugar "inflamos" una nueva vista, que será la que se
// mostrará en la celda del ListView. Para ello primero creamos el
// inflater, y después inflamos la vista.
LayoutInflater inflater = LayoutInflater.from(context);
View item = inflater.inflate(R.layout.cuadro_proyecto, null);
bar = (ProgressBar) item.findViewById(R.id.progressBar_proyecto);
titulo = (TextView) item.findViewById(R.id.textCategoria);
descripcion = (TextView) item.findViewById(R.id.textDescripcion);
total = (TextView) item.findViewById(R.id.textTotal);
invertido = (TextView) item.findViewById(R.id.textInvertido);
desde = (TextView) item.findViewById(R.id.textDesde);
imagen = (ImageView) item.findViewById(R.id.list_image_proyecto);
bar.setMax(datos.get(position).getBarTotal());
bar.setProgress(datos.get(position).getBarProgreso());
if (datos.get(position).getBarProgreso() >= datos.get(position).getBarTotal()){
bar.getProgressDrawable().setColorFilter(Color.GREEN, Mode.SRC_IN);
}
titulo.setText(datos.get(position).getTitulo());
descripcion.setText(datos.get(position).getDescripcion());
total.setText(datos.get(position).getTotal());
invertido.setText(datos.get(position).getInvertido());
desde.setText(datos.get(position).getDesde());
imagen.setImageBitmap(datos.get(position).getDibujo());
return item;
}
}