我看不到我的列表视图

时间:2014-09-20 14:32:12

标签: android listview

我看不到我的列表视图。我不知道问题出在哪里。你能告诉我任何解决方案吗?。

我的代码:

public class VerProyectos extends ActionBarActivity {
private ListView listaProyectos;

private ArrayList<datosProyectos>  proyectos;
private proyectosAdapter adaptador;
private ProgressDialog pDialog;

@SuppressLint("NewApi") @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_ver_proyectos);
    ActionBar bar = getActionBar();
    bar.setTitle("Ver Proyectos");
    bar.setBackgroundDrawable(new ColorDrawable(Color.parseColor("#ffa120")));  

    proyectos=new ArrayList<datosProyectos>();
    listaProyectos = (ListView)findViewById(R.id.listaProyectos);

    adaptador = new proyectosAdapter(VerProyectos.this);
    //listaProyectos.setAdapter(adaptador);

    listaProyectos.setOnScrollListener(new EndlessScrollListener());

}


@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();
}

类TareaWSObtenerProyectos:

     class TareaWSObtenerProyectos extends AsyncTask<String,Integer,Boolean> {

    private  ArrayList<datosProyectos> proyectosAux;
        protected void onPreExecute() {
            super.onPreExecute();
            pDialog = new ProgressDialog(VerProyectos.this);
            pDialog.setIndeterminate(false);
            pDialog.setCancelable(true);
            pDialog.show();        
            pDialog.setContentView(R.layout.progress_dialog_personalizado);         
        }

        protected Boolean doInBackground(String... params) {

            boolean resul = true;

            HttpClient httpClient = new DefaultHttpClient();

            HttpGet del = 
                    new HttpGet("https://www.sociosinversores.es/service/proyectos?page="+params[0]);

            del.setHeader("clave", "22c9b09e6b6667bc1da16f255488f8d0");


            try
            {           
                HttpResponse resp = httpClient.execute(del);
                String respStr = EntityUtils.toString(resp.getEntity());

                JSONObject respJSON = new JSONObject(respStr);
                JSONArray proyectos = (JSONArray) respJSON.get("proyectos");
                //JSONArray jsonArray = new JSONArray(respJSON);
                proyectosAux = new ArrayList<datosProyectos>();

                for(int i = 0; i < proyectos.length(); i++){                      

                      JSONObject json_data = proyectos.getJSONObject(i);
                      int idmensaje = json_data.getInt("ID");
                      int inversion_minima = json_data.getInt("inversion_minima");
                      int dinero_invertido = json_data.getInt("dinero_invertido");
                      int dinero_proyecto = json_data.getInt("dinero_proyecto");
                      String titulo = json_data.getString("post_title");
                      String resumen = json_data.getString("post_excerpt");
                      String url_imagen = json_data.getString("guid");
                      int progreso=(int)(dinero_invertido*100)/dinero_proyecto;
                      /*Proyecto pro = new Proyecto(idmensaje,titulo,0, "",
                              resumen, inversion_minima,dinero_proyecto,
                              dinero_invertido,url_imagen,null);*/
                      datosProyectos datos = new datosProyectos(dinero_proyecto, dinero_invertido, inversion_minima,
                              titulo, resumen, null, dinero_proyecto, progreso);

                      proyectosAux.add(datos);

                }


            }
            catch(Exception ex)
            {
                Log.e("ServicioRest","Error!", ex);
                resul = false;
            }

            return resul;
        }

        protected void onPostExecute(Boolean result) {
            pDialog.dismiss();
            if (result)
            {
                if (adaptador.getCount()==0){
                    listaProyectos.setAdapter(adaptador);
                }else{
                //prog.hide();
                adaptador.setItemList(proyectosAux);
                adaptador.notifyDataSetChanged();
                }
            }
        }

    }

class EndlessScrollListener:

    public class EndlessScrollListener implements OnScrollListener {

    private int visibleThreshold = 5;
    private int currentPage = 0;
    private int previousTotal = 0;
    private boolean loading = false;

    public EndlessScrollListener() {
    }
    public EndlessScrollListener(int visibleThreshold) {
        this.visibleThreshold = visibleThreshold;
    }

    @Override
    public void onScroll(AbsListView view, int firstVisibleItem,
            int visibleItemCount, int totalItemCount) {
        Log.d("Scroll","first: "+firstVisibleItem+"VisibleItem: "+visibleItemCount+"total_item : "+totalItemCount+"Load:"+loading+"previusTotal :"+previousTotal);
        if (loading) {

            if (totalItemCount > previousTotal) {
                loading = false;
                previousTotal = totalItemCount;
                currentPage++;
                Log.d("Scroll","Fin");
            }
        }
        if (!loading && (totalItemCount - firstVisibleItem) <= (visibleItemCount )) {
            // I load the next page of gigs using a background task,
            // but you can call any function here.
          //  new LoadGigsTask().execute(currentPage + 1);
             //prog.show();
             (new TareaWSObtenerProyectos()).execute(String.valueOf(currentPage));
            loading = true;
        }
    }

    @Override
    public void onScrollStateChanged(AbsListView view, int scrollState) {
    }
}

我的适配器:

    public class proyectosAdapter extends ArrayAdapter<datosProyectos> {
    private Context context;
    private static ArrayList<datosProyectos> datos =new ArrayList<datosProyectos>();

    private ProgressBar bar;
    private TextView titulo;
    private TextView descripcion;
    private TextView total;
    private TextView invertido;
    private TextView desde;
    private ImageView imagen;



    public proyectosAdapter(Context context, ArrayList<datosProyectos> proyectos) {
        super(context, R.layout.cuadro_proyecto, datos);
        this.context = context;

    }

    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;
    }

     public void setItemList(ArrayList<datosProyectos> a) {
        // int num = datos.size();
         for(int i = 0; i < a.size(); i++){
             datos.add(a.get(i));
              /*if (num>0)
                 datos.get(num+i).loadImage(adaptador);
              else
                 proyectos.get(i).loadImage(adaptador);*/
         }


        }
}

1 个答案:

答案 0 :(得分:0)

我将Adapter设置为ListView的唯一地方位于onPostExecute()

if (adaptador.getCount()==0){

但是在此之前我没有看到您在Adapter中设置了任何项目。只需设置Adapter,无论计数如何,都可以像onPostExecute()一样更新它。

我也看不到你在给AsyncTask打电话的地方,但这可能是我的疏忽。