¿Cómo actualizar listview cuando vuelve a presionar desde otra actividad Android?
Hola cómo actualizar listView
cuando se pulsa de nuevo en otra actividad. Estoy utilizando la base de datos, donde estoy borrando la fila particular en una Activity
, si la parte posterior presionó solamente, no está poniendo al día. Cuando cambio a otra actividad o aplicación cerrada y abierta, funciona bien donde se actualiza listView
.
Aquí está el código ..
- ¿Es posible cargar elementos ListPreference desde un adaptador?
- Combinar múltiples RecyclerView.Adapter para usar con RecyclerView único (Android)
- Encabezado de listview de Android
- Método Call Activity del adaptador
- Configurar la fuente personalizada dentro de `ImageAdapter extends BaseAdapter`
public class FragmentLiveChats extends Fragment { private AdapterLiveChat adapterChatHistory; private List<LiveChatDetails> customerDetail; private ListView mListView; private List<LiveChatDetails> list; @Override public void onViewCreated(View view, Bundle savedInstanceState) { list =AAEDatabaseHelper.getLiveChatDetails(Constants.TABLE_LIVE_CHAT); mListView = (ListView) rootView.findViewById(R.id.list_chat_history); parseResponse(); } private void parseResponse(){ for(int i=0;i<list.size();i++){ LiveChatDetails chatDetailsList = new LiveChatDetails(); chatDetailsList.setId(list.get(i).getId()); chatDetailsList.setFromUsername(list.get(i).getFromUsername()); chatDetailsList.setChatTime(list.get(i).getChatTime()); chatDetailsList.setLatMsg(list.get(i).getLatMsg()); customerDetail.add(chatDetailsList); } setValuesInAdapter(); } @Override public void onResume() { // TODO Auto-generated method stub super.onResume(); adapterChatHistory.updateList(customerDetail); adapterChatHistory.notifyDataSetChanged(); } private void setValuesInAdapter() { if (adapterChatHistory == null) { adapterChatHistory = new AdapterLiveChat(context); } adapterChatHistory.setExpertData(customerDetail); if (customerDetail != null && !customerDetail.isEmpty()) { mListView.setVisibility(View.VISIBLE); viewNoData.setVisibility(View.GONE); mListView.setAdapter(adapterChatHistory); } else { mListView.setVisibility(View.GONE); viewNoData.setVisibility(View.VISIBLE); } adapterChatHistory.notifyDataSetChanged(); mListView.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { LiveChatDetails chatDetails = (LiveChatDetails) parent.getAdapter() .getItem(position); Log.e("chatDetails", "chat details"+chatDetails.getId()); Intent intent = new Intent(context,ActivityExpertChatView.class); intent.putExtra(Constants.CHAT_USER_NAME, chatDetails.getId()); startActivity(intent); } }); }
En el adaptador:
public void setExpertData(List<LiveChatDetails> mTempData) { this.mTempData = mTempData; }
En la actividad de ExpertChatView
, estoy borrando un registro y si llego a esta pantalla, es decir, actividad anterior por retroceso, sigue siendo la misma lista y no se está actualizando. Pero cuando cierro la aplicación y abrir, está funcionando bien.
En la actividad expertChatView, estoy borrando el registro de nombre de usuario.
AAEDatabaseHelper.deleteUsername(<username>);
Intenté usar el método notifyDatasetChanged
en onResume()
pero todavía el mismo problema.
EDITAR
Adapter class public class AdapterLiveChat extends BaseAdapter { private Context context; private List<LiveChatDetails> mTempData; private LayoutInflater mInflater; private LiveChatDetails liveChatDetails; private View adView; private ViewHolder holder; private String userImageUrl; public AdapterLiveChat(Context context) { this.context = context; imgLoader = Picasso.with(context); mCalendar = Calendar.getInstance(); } public void setExpertData(List<LiveChatDetails> mTempData) { this.mTempData = mTempData; } public void updateList(List<LiveChatDetails> mChatDetails) { this.mTempData = mChatDetails; } @Override public int getCount() { return mTempData.size(); } @Override public LiveChatDetails getItem(int position) { return mTempData.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { mInflater = (LayoutInflater) context .getSystemService(Context.LAYOUT_INFLATER_SERVICE); liveChatDetails = getItem(position); adView = convertView; if (adView == null) { holder = new ViewHolder(); adView = mInflater.inflate(R.layout.row_live_chats, null); holder.txtName = (CustomTextView) adView .findViewById(R.id.txt_name); adView.setTag(holder); } else holder = (ViewHolder) adView.getTag(); holder.txtName.setText(liveChatDetails.getFromUsername()); return adView; }
// Ver clase de titular aquí …
- Devolución de llamada desde el adaptador
- ¿Cómo implementar una galería sin fin en Android?
- Animar las adiciones de RecyclerView desde abajo
- Adaptador personalizado Imageview de Android ListView
- Pasar la posición en el ListView al niño RecyclerView Adapter
- Android: el valor de un spinner depende del valor de otro spinner
- Uso de AsyncTask para cargar imágenes en un adaptador personalizado
- Android listview muestra datos falsos después de desplazarse (adaptador personalizado)
Primero escriba el siguiente método en Adapter
public void updateList(List<Messages> mChatDetails) { this.mChatDetails.clear(); this.mChatDetails.addAll(mChatDetails) }
En la búsqueda del curriculum vitae los datos de la base de datos y el método updateList de la llamada (lista mChatDetails) entonces llama notifyDatasetChanged ()
@Override public void onResume() { // fetch updated data adapter.updateList(mChatDetails); adapter.notifyDataSetChanged(); }
Elimine ese elemento de la lista customerDetail
y luego llame a notifydatasetchanged()
- Cómo ejecutar script matlab desde java (para android) usando matlabcontol.jar
- ¿Por qué Android utiliza múltiples contextos y cada uno es diferente?