2014-07-16 4 views
0

나는 하나의 활동에 개의 다중 ListView를 가지고 있으며, ListView 각각에 대해 ContextMenu를 사용하여을 가지고 있습니다. 리스트 뷰 각각에 대한 컨텍스트 메뉴가있는 하나의 활동에서 다중 목록보기

실제로는 모든 7 개의 ListView와 함께 잘 작동해야하지만, 그것은 단지 일곱 번째 목록

이 내 코드에 대한 작동합니다.

ArrayAdapter<Course> adapter; 
for(int i=0;i<7;i++){ 
     courses = db.findFiltered(String.format("day == %d ", i), "startTime ASC"); 
     ListView lv1 = (ListView) findViewById (arrayList[i]); 
     registerForContextMenu(lv1); 
     lv1.setOnItemClickListener(new OnItemClickListener() { 
      @Override 
      public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, 
        long arg3) { 
       // TODO Auto-generated method stub 
      } 
     }); 
     adapter = new CourseListAdapter(this, courses); 
     lv1.setAdapter(adapter); 
    } 

@Override 
public void onCreateContextMenu(android.view.ContextMenu menu, View v, ContextMenuInfo  menuInfo)  
{ 
super.onCreateContextMenu(menu, v, menuInfo); 
MenuInflater inflater = getMenuInflater(); 
inflater.inflate(R.menu.contextmenu, menu); 
} 
@Override 
public boolean onContextItemSelected(MenuItem item) { 
AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo(); 
switch (item.getItemId()) { 
case R.id.editItem: 
//do something 
return true; 
case R.id.showItem: 
//do something 
return true; 
case R.id.deleteItem: 
    db.removeCourse(adapter.getItem(info.position); 
    adapter.remove(adapter.getItem(info.position)); 

return true; 
default: 
    return super.onContextItemSelected(item); 
    } 
} 

도와주세요

+0

무엇이 질문입니까? –

+0

컨텍스트 메뉴의 deleteItem은 일곱 번째 목록에서만 작동하지만 1, 2, ..., 6 번째 목록보기에서는 작동하지 않습니다 – user3824114

+0

감사합니다 Krupa Patel – user3824114

답변

1

Adapter 인스턴스는 반복 ListView 개체를 마지막으로 설정되어 있습니다. 이것은 빠른 코드 변경입니다. 이것을보십시오 :

private ArrayAdapter<Course> selectedListViewAdapter; 

... 

for(int i=0;i<7;i++){ 
     courses = db.findFiltered(String.format("day == %d ", i), "startTime ASC"); 
     ListView lv1 = (ListView) findViewById (arrayList[i]); 
     registerForContextMenu(lv1); 

    lv1.setOnItemClickListener(new OnItemClickListener() { 
      @Override 
      public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, 
        long arg3) { 
       // TODO Auto-generated method stub 
      } 
     }); 

     ArrayAdapter<Course> adapter = new CourseListAdapter(this, courses); 
     lv1.setAdapter(adapter); 
    } 

@Override 
public void onCreateContextMenu(android.view.ContextMenu menu, View v, ContextMenuInfo  menuInfo)  
{ 
    super.onCreateContextMenu(menu, v, menuInfo); 
    MenuInflater inflater = getMenuInflater(); 
    inflater.inflate(R.menu.contextmenu, menu); 

    try { 
     ListView selectedListView = (ListView)v; 
     selectedListViewAdapter = (ArrayAdapter<Course>)selectedListView.getAdapter(); 
    } catch(ClassCastException e) { 
    } 
} 

@Override 
public boolean onContextItemSelected(MenuItem item) { 
    AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo(); 
    switch (item.getItemId()) { 
    case R.id.editItem: 
     //do something 
     return true; 
    case R.id.showItem: 
     //do something 
     return true; 
    case R.id.deleteItem: 
     if(null != selectedListViewAdapter) { 
      db.removeCourse(selectedListViewAdapter.getItem(info.position); 
       selectedListViewAdapter.remove(selectedListViewAdapter.getItem(info.position)); 
     } 

    return true; 
    default: 
     return super.onContextItemSelected(item); 
     } 
} 
+0

대단히 감사합니다 – user3824114