CursorAdapter를 사용하는 ListActivity가 있는데 새로 고칠 수 없습니다. ContactDetailsActivity
내부의 방법은 내가 전화 refreshListView()
라고 내가 한ListActivity with CursorAdapter에서 ListView 새로 고침
public class ContactDetailsCursorAdapter extends CursorAdapter
:
이public class ContactDetailsActivity extends ListActivity
{
private ContactDetailsBroadcastReceiver mLvBroadcastReceiver;
private Contact contact;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
contact = (Contact)getIntent().getSerializableExtra(AwesomeApp.CONTACT_OBJECT);
if(contact == null) {
DataUtils.log("Starting ContactDetailsActivity with NULL contact.");
Toast.makeText(this, getString(R.string.no_contact_selected), Toast.LENGTH_SHORT).show();
finish();
return;
}
DataUtils.log("Starting ContactDetailsActivity with contact:" + contact.toString());
setTitle(contact.getName());
Cursor cursor = getContactDetailsCursor();
startManagingCursor(cursor);
setListAdapter(new ContactDetailsCursorAdapter(this, cursor));
ListView lv = getListView();
lv.setBackgroundResource(R.color.white);
lv.setOnItemClickListener(new AdapterView.OnItemClickListener()
{
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id)
{
Toast.makeText(ContactDetailsActivity.this, "touched", Toast.LENGTH_SHORT).show();
}
});
//Create broadcast receiver, to detect when a file upload has finished so we can update the pic status.
mLvBroadcastReceiver = new ContactDetailsBroadcastReceiver();
}
private class ContactDetailsBroadcastReceiver extends BroadcastReceiver
{
@Override
public void onReceive(Context context, Intent intent)
{
DataUtils.log("In BroadcastReceiver - ContactDetails");
refreshListView();
}
}
내 어댑터가 기본적으로 그냥 CursorAdapter
를 확장 내가 newView
및 bindView
을 무시하는 : 여기에 내가 사용하고 코드의 일부입니다 onResume()
및 onReceive()
내 BroadcastReceiver 방법
이 내 getContactDetailsCursor()
방법 : 당신이 볼 수 있듯이, 나는 notifyDataSetChanged()
, invalidate()
, invalidateViews()
을 시도하고 아무것도 목록보기를 새로 것 같다
private Cursor getContactDetailsCursor()
{
AwesomeDbAdapter dbAdapter = AwesomeApp.getDbAdapter(this);
Cursor c = dbAdapter.getRecentConversationsFromContact(contact.getId());
DataUtils.log("New ContactDetails cursor has " + c.getCount() + " elements");
return c;
}
.
새로 고침하는 방법에 대한 아이디어가 완전히 없습니다. 로그를보고 있는데이 메서드는 onResume()
과 BroadcastReceiver의 onReceive()
메서드에서 호출됩니다.
모든 포인터가 높이 평가됩니다!
실제로는 onReceive() 메소드가 호출되고 refreshListView()가 호출되면 로그 메시지가 표시됩니다. 그러나 listview는 동일하게 유지됩니다. 이 코드는 명확성을 위해 위에 포함되지 않았지만 이는 언급되어 있습니다. – Sandy