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