데이터베이스 테이블의 내용을 표시하는 사용자 지정 목록보기가 있습니다. 사용하면 데이터베이스에 새 항목을 추가 할 수 있으며 새로 추가 된 항목뿐만 아니라 테이블의 다른 항목도 표시하도록 Listview가 다시로드됩니다.목록보기를 다시로드하면 이전 및 새 내용이 표시됩니다.
그러나 목록보기가 업데이트 될 때 아래 코드를 사용하면 추가 내용과 추가 내용에 대한 표의 콘텐츠가 모두 표시됩니다. 예를 들면 다음과 같은
는목록보기 보일 것이다
이Item 1
Item 2
Item 3
그런 다음 사용자가 새 항목을 추가하고이
Item 1
Item 2
Item 3
Item 4
과 같아야하지만 그 대신이 표시
Item 1
Item 2
Item 3
Item 1
Item 2
Item 3
Item 4
이 코드를 사용하여 목록보기를 업데이트합니다.
,m_adapter.clear();
for (int i = 0; i < db.getAllLists().size(); i++) {
m_adapter.add(db.getAllLists().get(i));
}
m_adapter.notifyDataSetChanged();
Mylistadapter
class MyListAdapter extends ArrayAdapter<mList> {
private ArrayList<mList> items;
public MyListAdapter(Context context, int textViewResourceId, ArrayList<mList> items) {
super(context, textViewResourceId, items);
this.items = items;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v = convertView;
if (v == null) {
LayoutInflater vi = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = vi.inflate(R.layout.list_row_layout, null);
}
mList o = items.get(position);
if (o != null) {
TextView tt = (TextView) v.findViewById(R.id.ptitle);
Typeface font = Typeface.createFromAsset(getAssets(), "Asap-Regular.ttf");
tt.setTypeface(font);
if (tt != null) {
tt.setText(o.getName() + " (" + db.getItemsCount(o.getID()) + ")");
}
}
return v;
}
}
그리고
다음 아래의 코드 내에서 OnCreate에 : 당신편집 감사합니다,
ArrayList<mList> m_orders = db.getAllLists();
MyListAdapter m_adapter = new MyListAdapter(this, R.layout.list_row_layout, m_orders);
ListView list1.setAdapter(m_adapter);
당신이 다른 코드를 볼 필요가 있다면 알려주세요 시도해 본 것
m_orders.clear();
m_orders = db.getAllLists();
m_adapter.addAll(m_orders);
m_adapter.notifyDataSetChanged();
여전히 이전 및 새 목록을 모두 보여줍니다 그러나
이전 목록이 지워지지 않고 이전 목록과 새 목록을 추가합니다. 아마도 m_adapter.clear()가 제대로 작동하지 않을 수 있습니다. 더 많은 코드를 게시 하시겠습니까? –
@ Yume117 추가 비용 게시 됨 –
ArrayList (어댑터 대신)를 지우고 ArrayList에 새 항목을 추가 한 다음 notifyDatasetChanged()를 호출하는 것은 어떻습니까? 내 말은, 그게 내가하는 일이고 결코 실패하지 않는다는거야. – Swayam