2017-10-17 9 views
0

J'utilise ListView qui se trouve dans ScrollView. Chaque fois que j'effectue une opération de suppression sur les données ListView est supprimer, mais le problème est après suppression des données, malheureusement, l'application s'est arrêtée. J'utilise un domaine pour stocker des données et supprimer des données du domaine. Ceci est mon code.Comment rafraîchir ListView dans scrollView après avoir supprimé les données de ListView using Realm?

listViewSearchCity.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) { 
      PostUserItinerary item = (PostUserItinerary) listViewSearchCity.getItemAtPosition(i); 
      view.setBackgroundColor(Color.parseColor("#a9a9a9")); 
      // change1(); 
      h=item.getSearchCity(); 
      onclick(); 
      // onitemclick(); 

     } 
    }); 
public void onclick() 
{ 

    imgDelete.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      //PostItinerarySearchCityAdapter adapter = new PostItinerarySearchCityAdapter(PostUserItineraryActivity.this,helper.justRefresh()); 
      String type =h ; 
      final RealmResults<PostUserItinerary> students = realm.where(PostUserItinerary.class).findAll(); 

      PostUserItinerary postUserItinerary = students.where().equalTo("searchCity", type).findFirst(); 

      if (postUserItinerary != null) { 

       if (!realm.isInTransaction()) { 
        realm.beginTransaction(); 
       } 

       postUserItinerary.deleteFromRealm(); 
       realm.commitTransaction(); 
       adapter.notifyDataSetChanged(); 
       // listViewSearchCity.setAdapter(adapter); 

      } 
     } 
     //final int position2 = holder.getAdapterPosition(); 



    }); 

} 

Ceci est mon journal de bord.

10-17 10: 51: 09,717 6586-6586/com.xitiz.xitizmobile E/AndroidRuntime: EXCEPTION FATAL: principal processus: com.xitiz.xitizmobile, PID: 6586 java.lang.NullPointerException à com.xitiz.xitizmobile.PostUserItineraryActivity $ 7.Cliquez sur (PostUserItineraryActivity.java:327) à android.view.View.performClick (View.java:4444) à android.view.View $ PerformClick.run (View.java: 18440) à android.os.Handler.handleCallback (Handler.java:733) à android.os.Handler.dispatchMessage (Handler.java:9 5) à android.os.Looper.loop (Looper.java:136) à android.app.ActivityThread.main (ActivityThread.java:5052) à java.lang.reflect.Method.invokeNative (méthode native) à java.lang.reflect.Method.invoke (Method.java:515) à com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:796) à com.android.internal.os.ZygoteInit .main (ZygoteInit.java:612) à dalvik.system.NativeStart.main (native Method)

+0

mettre votre journal aussi –

+0

indiquant la ligne PostUserItineraryActivity.java:327 –

+0

PostUserItineraryActivity est ma classe d'activité. – Deepa

Répondre

0

La façon simple de le faire serait de faire PostItinerarySearchCityAdapter extends RealmBaseAdapter<PostUserItinerary>, initialisez-le avec RealmResults<PostUserItinerary> directement, puis supprimez tous les appels que vous avez effectués directement à adapter.notifyDataSetChanged();.

Vous pouvez voir un exemple Activity et Adapter dans les échantillons de Realm.

class MyListAdapter extends RealmBaseAdapter<PostUserItinerary> implements ListAdapter { 

    private static class ViewHolder { 
     TextView countText; 
     CheckBox deleteCheckBox; 
    } 

    MyListAdapter(OrderedRealmCollection<Counter> realmResults) { 
     super(realmResults); 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     ViewHolder viewHolder; 
     if (convertView == null) { 
      convertView = LayoutInflater.from(parent.getContext()) 
        .inflate(R.layout.row, parent, false); 
      viewHolder = new ViewHolder(); 
      viewHolder.countText = (TextView) convertView.findViewById(R.id.textview); 
      viewHolder.deleteCheckBox = (CheckBox) convertView.findViewById(R.id.checkBox); 
      convertView.setTag(viewHolder); 
     } else { 
      viewHolder = (ViewHolder) convertView.getTag(); 
     } 

     final PostUserItinerary item = getItem(position); 
     ... 
     return convertView; 
    } 
} 

et

public class ListViewExampleActivity extends AppCompatActivity { 

    private Realm realm; 
    private MyListAdapter adapter; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_listview); 
     realm = Realm.getDefaultInstance(); 

     // RealmResults are "live" views, that are automatically kept up to date, even when changes happen 
     // on a background thread. The RealmBaseAdapter will automatically keep track of changes and will 
     // automatically refresh when a change is detected. 
     adapter = new MyListAdapter(realm.where(PostUserItinerary.class).findAllAsync()); 
+0

Merci beaucoup .... – Deepa