2014-09-19 3 views
0

좋아요, 그래서 ListList로 채워진 MemoryListActivity가 있습니다. 나는 사용자 정의 메모리 개체 목록을 채우고, 그 결과 코드가 괜찮은지 내가 돌아올 때 호출되는 onActivityResult 방법에서 업데이트하기 위해 노력하고있어새 업데이트 항목을 추가 할 때 업데이트 할 사용자 지정 ArrayAdapter <Memory> 업데이트

public class MemoryAdapter extends ArrayAdapter<Memory> { 

private static final String TAG = "MemoryAdapter.TAG"; 
private Context context; 
private List<Memory> objects; 

public MemoryAdapter(Context context, int resource, List<Memory> memoryList) { 
    super(context,resource, memoryList); 
    this.context = context; 
    this.objects = memoryList; 


} 

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    Log.i(TAG, "getView entered"); 

    LayoutInflater inflater = (LayoutInflater) context.getSystemService(Activity.LAYOUT_INFLATER_SERVICE); 

    View view = inflater.inflate(R.layout.memory_list_item, null); 

    Memory memory = objects.get(position); 

    TextView eventTV = (TextView) view.findViewById(R.id.list_item_title); 
    eventTV.setText(memory.getEventName()); 

    TextView eventLocationTV = (TextView) view.findViewById(R.id.list_item_location); 
    eventLocationTV.setText(memory.getEventLocation()); 

    TextView numGuestsTV = (TextView) view.findViewById(R.id.list_item_guest_count); 
    numGuestsTV.setText(Integer.toString(memory.getNumGuests())); 

    return view; 
} 
} 

아래 MemoryAdapter.class을 사용하고 있습니다 .

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    if (requestCode == NEW_MEM_CODE && resultCode == RESULT_OK) { 
     // TODO: force refresh with notifyDataSetChanged() 
     refresh(); 
    } 
} 

refresh(); 코드에는 어떤 코드가 필요합니까? 이것은 내가 뭘하려하지만, 이렇게 할

private void refresh() { 

    MemoryListFragment frag = (MemoryListFragment) getFragmentManager().findFragmentByTag(MemoryListFragment.TAG); 

    ArrayAdapter<Memory> adapter = (ArrayAdapter<Memory>) frag.getListAdapter(); 

    adapter.notifyDataSetChanged(); 
} 
+0

갱신 어댑터'yourAdapter.notifyDataSetChanged는()가 작동하지 않을 경우'다음 다시 초기화하여 'adapter'를 새로운 데이터로 바꾸고 그'adapter'를 당신의 목록에 설정하십시오. – Rustam

+0

어디에서이 작업을 수행해야합니까? 포함하는 액티비티 또는 listFragment 내에서? – ENG618

+0

새 데이터는 어디에 있습니까? – mmlooloo

답변

0

을 작동하지 않습니다 :

private void refresh() { 

    memoryAdapter=MemoryAdapter(context, updatedMemoryList); 

    memoryAdapter.notifyDataSetChanged(); 
} 
+0

나는 이것을 시도했지만 여전히 아무것도 ... 'private void refresh() { HashMap memories = managers.getMemories(); 목록 memoryList = new ArrayList (memories.values ​​()); MemoryAdapter adapter = new MemoryAdapter (this, R.layout.memory_list_item, memoryList); adapter.notifyDataSetChanged(); } 코드의 MemoryAdapter 클래스에있는 – ENG618

+0

이 이미 xml을 부 풀리고 있으므로'memoryAdapter = MemoryAdapter (context, updatedMemoryList); ' 'memoryAdapter.notifyDataSetChanged();' – Rustam

+0

그래서 나는 그 매개 변수만으로 내 ArrayAdapter 클래스에 새로운 메소드를 만들어야 할 것입니다. – ENG618