Android 刷新列表视图

Android 刷新列表视图,android,listview,Android,Listview,使用“向下滚动”时,我无法刷新我的列表视图。我们需要更新我的适配器。我不知道怎么做 我的活动: 公共类VerProyectos扩展了ActionBarActivity{ 私家车; int-inicio=0; int-fin=10; @SuppressLint(“NewApi”)@覆盖 创建时受保护的void(Bundle savedInstanceState){ super.onCreate(savedInstanceState); //this.requestWindowFeature(Win

使用“向下滚动”时,我无法刷新我的
列表视图。我们需要更新我的适配器。我不知道怎么做

我的活动:
公共类VerProyectos扩展了ActionBarActivity{
私家车;
int-inicio=0;
int-fin=10;
@SuppressLint(“NewApi”)@覆盖
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
//this.requestWindowFeature(Window.FEATURE_NO_TITLE);//Quitar la barra de titulo
setContentView(R.layout.activity\u ver\u proyectos);
ActionBar=getActionBar();
律师资格(“Ver Proyectos”);
条.立根拉深(新的彩色拉深(Color.parseColor(“#ffa120”)));
ListAproyExtos=(ListView)findViewById(R.id.ListAproyExtos);
//adapterProyectos=新的proyectosAdapter(VerProyectos.this,list);
addProyect(inicio,fin);
inicio+=10;
setOnItemClickListener(新的OnItemClickListener(){
@凌驾
公共链接(适配器视图arg0、视图arg1、内部位置、,
长arg3){
Intent iraproyecto=新Intent(VerProyectos.this,InfoProyecto.class);
irAInfoProyecto.putExtra(“tituloProyecto”,datos[pos].getitulo());
irapproyecto.putExtra(“descripionproyecto”,datos[pos].getdescripion());
putExtra(“totalProyecto”,datos[pos].getTotal());
putExtra(“invertirProyecto”,datos[pos].getInvertido());
startActivity(irAInfoProyecto);
}
});
setOnScrollListener(新的OnScrollListener()){
private int visibleThereshold=0;
@凌驾
公共无效onScrollStateChanged(AbsListView视图,int scrollState){
//TODO自动生成的方法存根
//在卷轴上实现你的梦想,
//哦,大海,埃斯特恩埃斯塔多闲着
如果(滚动状态==滚动状态空闲){
//这是最后一个元素+1个元素
//基本要素的数量
//卡加岛的潘塔拉酒店
如果(ListAproyExtos.getLastVisiblePosition()==ListAproyExtos.getAdapter().getCount()-1

&&ListaProyExtos.getChildAt(ListaProyExtos.getChildCount()-1).getBottom()你的意思是拉刷新吗?嗨,对不起,我的英语有点差。我们需要刷新适配器,因为当我添加更多项并单击项时,我会丢失适配器的引用。只需调用notifyDataSetChanged();数据更新到适配器后的方法。我读过有关此方法的文章,但证明了它,但它不起作用。我将此方法放在代码中的何处?您可以将我的代码放在哪里吗?
final proyectosAdapter adapter proyectos=new proyectosAdapter(VerProyectos.this,list);
您正在使用旧的
列表创建一个新适配器。但是,在创建之前,您应该先用新数据填充列表。之后,只需设置新适配器。但是,您不只是想将项目添加到现有列表中吗?只需添加到适配器中的列表中,然后更改通知数据集即可`
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;
    }
}