刷新ListView

时间:2014-09-19 12:03:50

标签: android listview

当我使用向下滚动时,我有问题刷新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;
    }
}

0 个答案:

没有答案