2013-08-21 3 views
0

나는 안드로이드에 익숙하지 않다. 나는 그것을 클릭 할 때 "Mark As Completed"라는 메쏘드를 만들었고, 그것을 클릭하면 데이터베이스에 참값을 설정했다. 지금 내가 원하는 것은 데이터베이스에서가 아니라 목록에서 삭제 된 해당 항목을 마킹 할 때입니다. 가능한가?안드로이드에서 삭제하지 않고 목록에서 항목을 제거하는 방법?

편집 :

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main_layout); 
    addTasklist = (EditText)findViewById(R.id.addTasklist); 
    taskList_completed = (CheckBox)findViewById(R.id.completedflag); 
    Button ok = (Button)findViewById(R.id.add); 
    ok.setOnClickListener(this); 
    list(); 
    } 
public void list(){ 
    db = new TodoTask_Database(getApplicationContext()); 
    list_tasklistname = (ListView)findViewById(R.id.listview); 
    list = db.getAllTaskList(); 
    adapter = new CustomAdapter(Main_Activity.this, R.layout.tasklist_row, list); 
    list_tasklistname.setAdapter(adapter); 
    db.close(); 
    adapter.notifyDataSetChanged(); 
    registerForContextMenu(list_tasklistname); 

@Override 
public boolean onContextItemSelected(MenuItem item) { 
    AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo(); 
    Position = info.position; 
    switch (item.getItemId()) { 
case R.id.MarkAsCompleted: 
     db = new TodoTask_Database(getApplicationContext()); 
     task = adapter.getItem(Position); 
     int taskList_Id = task.getTaskListId(); 
     // here is database method which is setting item value true when mark as completed on long click listener is pressed. 
db.Complete_TaskList(taskList_Id);    
     break; 
     } 
    return super.onOptionsItemSelected(item); 
    } 

내 사용자 지정 목록 어댑터 :

public class CustomAdapter extends ArrayAdapter<Task> { 

    private List<Task> dataitem; 
    private Activity activity; 
    TodoTask_Database db; 

public CustomAdapter(Activity a, int textViewResourceId, List<Task> items) { 
    super(a, textViewResourceId, items); 
    this.dataitem = items; 
    this.activity = a; 
} 

public static class ViewHolder{ 
    public TextView tasklistTitle; 
    public TextView createdDate; 
    public CheckBox completedflag; 
} 

    @Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    View v = convertView; 
    final ViewHolder holder; 
    if (v == null) { 
     LayoutInflater vi = 
      (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     v = vi.inflate(R.layout.tasklist_row, null); 
     holder = new ViewHolder(); 
     holder.tasklistTitle = (TextView) v.findViewById(R.id.tasklistTitle); 
     holder.createdDate = (TextView) v.findViewById(R.id.createdDate); 
     holder.completedflag = (CheckBox) v.findViewById(R.id.completedflag); 
     v.setTag(holder); 
    } 
    else 
     holder=(ViewHolder)v.getTag(); 

    final Task custom = dataitem.get(position); 
    if (custom != null) { 
     holder.tasklistTitle.setText(custom.getTaskListTitle()); 
     holder.createdDate.setText(custom.getTaskListCreated()); 
     holder.completedflag.setText(custom.getTaskListCompletedFlag()); 
    } 
    return v; 
} 
    public synchronized void refresAdapter(List<Task> dataitems) { 
    dataitem.clear(); 
    dataitem.addAll(dataitems); 
    notifyDataSetChanged(); 
    } 
} 
+0

목록 어댑터에서 해당 항목을 제거하십시오 .. –

+0

그래, 내 사용자 지정 목록 어댑터에서이를 수행하려고합니다. 그러나 실패. – Shweta

+1

게시 한 내용을 게시하십시오 – Raghunandan

답변

2

case R.id.MarkAsCompleted에서

list.remove(Position); // Remove item from List 
adapter.notifyDataSetChanged(); // Notify adapter 

를 추가합니다. 아래처럼

case R.id.MarkAsCompleted: 
     db = new TodoTask_Database(getApplicationContext()); 
     task = adapter.getItem(Position); 
     int taskList_Id = task.getTaskListId(); 
     // here is database method which is setting item value true when mark as completed on long click listener is pressed. 
db.Complete_TaskList(taskList_Id); 
// Remove from List 
list.remove(Position); // Added here 
adapter.notifyDataSetChanged(); // Added here   
     break; 

이렇게하면 ListView 항목이 제거됩니다.

+0

일하고 있습니다, 정말 고마워요, 제 하루를 구하십시오. – Shweta

+0

가장 환영합니다 :) 및 congs –

+0

오,하지만 다시 앱을 업로드 한 후 동일한 값을 다시 표시하고 있습니다. 목록을 업데이트하지 않습니다. 그렇게하는 방법? – Shweta

관련 문제