ListView
に少し問題があります。 ListView
コンテンツを消去し、カスタムアダプターがあることを知るにはどうすればよいですか?
edit
-カスタムアダプタークラスはBaseAdapter
を拡張し、次のようになります。
import Android.app.Activity;
import Android.content.Context;
import Android.view.LayoutInflater;
import Android.view.View;
import Android.view.ViewGroup;
import Android.widget.BaseAdapter;
import Android.widget.TextView;
public class MyAdapter extends BaseAdapter {
private Activity activity;
private String[] data;
private static LayoutInflater inflater = null;
public MyAdapter(Activity a, String[] str) {
activity = a;
data = str;
inflater = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
public static class ViewHolder {
public TextView text;
}
@Override
public int getCount() {
return data.length;
}
@Override
public Object getItem(int position) {
return position;
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View view, ViewGroup parent) {
View v = view;
ViewHolder holder;
if (v == null) {
v = inflater.inflate(R.layout.rowa, null);
holder = new ViewHolder();
holder.text= v.findViewById(R.id.dexter);
v.setTag(holder);
} else {
holder = v.getTag();
}
holder.text.setText(data[position]);
return v;
}
}
単純に書き込む
listView.setAdapter(null);
アダプタにリストまたは配列を渡したと思います。この追加されたコレクションのインスタンスを保持する場合、次を実行できます。
collection.clear();
listview.getAdapter().notifyDataSetChanged();
これは、collectionでアダプターをインスタンス化し、それが同じインスタンスである場合にのみ機能します。
また、拡張したアダプタによっては、これができない場合があります。 SimpleAdapterは静的データに使用されるため、作成後に更新することはできません。
PS。すべてのアダプタにclear()メソッドがあるわけではありません。 ArrayAdapterは行いますが、ListAdapterまたはSimpleAdapterしない
それは簡単です。まず、コレクションをクリアし、次のコードのようなリストをクリアした後、
yourCollection.clear();
setListAdapter(null);
AndroidバージョンMおよびNの時点で、次のように機能し、正しいアプローチになります。 ListViewを空にするか、Adapterをnullに設定するのは適切な方法ではなく、nullポインターの問題、無効なListView、アプリのクラッシュを引き起こす可能性があります。
単純に:
mList.clear();
mAdapter.notifyDataSetChanged();
つまり、最初にリストを完全にクリアしてから、アダプターにこの変更を知らせます。 Androidは、空のリストでUIを正しく更新します。私の場合、リストはArrayListです。
別のスレッドからこの操作を行う場合、UIスレッドで次のコードを実行します。
runOnUiThread(mRunnable);
MRunnableは次のとおりです。
Runnable mRunnable = new Runnable() {
public void run() {
mList.clear();
mAdapter.notifyDataSetChanged();
}
};;
簡単に動作します:)
YourArrayList_Object.clear();
メソッドにコードListView.Items.Clear();
を追加するだけです
リストビューの重複エントリの解決策があります。アクティビティでonBackPress()
-メソッドを宣言し、以下に示すハイライトコードを書き留める必要があります。
@Override
public void onBackPressed() {
// TODO Auto-generated method stub
super.onBackPressed();
**
attendence_webdata.clear(); list.setAdapter(null);
--------------------------------------------------
**
}
カスタムアダプターからアイテムを削除し、 notifyDataSetChanged()
を呼び出します。