Android에서 ListView 항목 제거
누군가가 모든 ListView 항목을 제거하고 새 항목으로 바꾸는 예제 코드를 줄 수 있습니까?
어댑터 항목을 성공적으로 교체하려고했습니다. 내 코드는
populateList(){
results //populated arraylist with strings
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, results);
listview.setAdapter(adapter);
adapter.notifyDataSetChanged();
listview.setOnItemClickListener(this);
}
// now populating list again
repopulateList(){
results1 //populated arraylist with strings
ArrayAdapter<String> adapter1 = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, results1);
listview.setAdapter(adapter1);
adapter1.notifyDataSetChanged();
listview.setOnItemClickListener(this);
}
여기 repopulateList()
메서드는 ListView 항목에 추가되지만 모든 ListView 항목을 제거 / 대체하지는 않습니다.
당신이 원하는 것 remove()
어댑터 개체에서 항목 후 바로 실행 notifyDatasetChanged()
어댑터에, 어떤 ListView
거기에 뜻 (해야) 재활용 및 업데이트 자체입니다.
다음은 s를 사용한 간단한 활동 예입니다 AlertDialog
.
adapter = new MyListAdapter(this);
lv = (ListView) findViewById(android.R.id.list);
lv.setAdapter(adapter);
lv.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> a, View v, int position, long id) {
AlertDialog.Builder adb=new AlertDialog.Builder(MyActivity.this);
adb.setTitle("Delete?");
adb.setMessage("Are you sure you want to delete " + position);
final int positionToRemove = position;
adb.setNegativeButton("Cancel", null);
adb.setPositiveButton("Ok", new AlertDialog.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
MyDataObject.remove(positionToRemove);
adapter.notifyDataSetChanged();
}});
adb.show();
}
});
다음 코드를 추가하면 작동 할 것이라고 생각합니다.
listview.invalidateViews();
항목을 제거하려면 어댑터에 전달한 배열 목록에서 해당 항목을 제거하고 수행 listview.invalidateViews();
하면 목록보기가 새로 고쳐집니다.
당신이 사용할 수있는
adapter.clear()
그러면 첫 번째 어댑터의 모든 항목이 제거되고 다른 어댑터를 설정하거나 어댑터를 다시 사용하여 이전 어댑터에 항목을 추가 할 수 있습니다. 사용하는 경우
adapter.add()
목록에 데이터를 추가하기 위해 notifyDataSetChanged를 호출 할 필요가 없습니다.
int count = adapter.getCount();
for (int i = 0; i < count; i++) {
adapter.remove(adapter.getItem(i));
}
그런 다음 전화 notifyDataSetChanged();
어댑터에서 제거하고 데이터 세트가 변경되었음을 어레이 어댑터에 알립니다.
m_adapter.remove(o);
m_adapter.notifyDataSetChanged();
names = db.getSites();
la = new ArrayAdapter<String>(EditSiteList.this,
android.R.layout.simple_list_item_1, names);
EditSiteList.this.setListAdapter(la);
listview.invalidateViews();
이 코드는 나를 위해 잘 작동합니다.
- 나열해야하는 데이터 목록과 바인딩 된 하나의 어댑터 만 사용해야합니다.
- 모든 항목을 제거하고 교체해야하는 경우 "list.clear ()"를 사용하여 데이터 목록에서 모든 항목을 지우고 "list.addAll (List)"를 사용하여 새 데이터를 추가해야합니다.
여기에 예가 있습니다.
List<String> myList = new ArrayList<String>();
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, myList);
listview.setAdapter(adapter);
listview.setOnItemClickListener(this);
populateList(){
List<String> result = getDataMethods();
myList.addAll(result);
adapter.notifyDataSetChanged();
}
repopulateList(){
List<String> result = getDataMethods();
myList.clear();
myList.addAll(result);
adapter.notifyDataSetChanged();
}
이 코드를 시도해보십시오.
public class Third extends ListActivity {
private ArrayAdapter<String> adapter;
private List<String> liste;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_third);
String[] values = new String[] { "Android", "iPhone", "WindowsMobile",
"Blackberry", "WebOS", "Ubuntu", "Windows7", "Max OS X",
"Linux", "OS/2" };
liste = new ArrayList<String>();
Collections.addAll(liste, values);
adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, liste);
setListAdapter(adapter);
}
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
liste.remove(position);
adapter.notifyDataSetChanged();
}
}
먼저 목록에서 항목을 제거해야합니다. 나중에 어댑터를 비우고 새 목록으로 다시 채울 수 있습니다.
private void add(final List<Track> trackList) {
MyAdapter bindingData = new MyAdapter(MyActivity.this, trackList);
list = (ListView) findViewById(R.id.my_list); // TODO
list.setAdapter(bindingData);
// Click event for single list row
list.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
final int position, long id) {
// ShowPlacePref(places, position);
AlertDialog.Builder showPlace = new AlertDialog.Builder(
Favoriler.this);
showPlace.setMessage("Remove from list?");
showPlace.setPositiveButton("DELETE", new OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
trackList.remove(position); //FIRST OF ALL REMOVE ITEM FROM LIST
list.setAdapter(null); // THEN EMPTY YOUR ADAPTER
add(trackList); // AT LAST REFILL YOUR LISTVIEW (Recursively)
}
});
showPlace.setNegativeButton("CANCEL", new OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
}
});
showPlace.show();
}
});
}
It's simple .First you should clear your collection and after clear list like this code :
yourCollection.clear();
setListAdapter(null);
참고URL : https://stackoverflow.com/questions/2558591/remove-listview-items-in-android
'development' 카테고리의 다른 글
IntelliJ에서 불가능한 일이 Eclipse에서 가능합니까? (0) | 2020.12.10 |
---|---|
SQL 계산에서 별칭 사용 (0) | 2020.12.10 |
Google Maps API V3의 API 키는 무엇입니까? (0) | 2020.12.10 |
Dart를 사용하여 문자열을 숫자로 어떻게 구문 분석합니까? (0) | 2020.12.10 |
외부 js 파일의 Asp.Net Mvc Url.Action? (0) | 2020.12.10 |