package com.cookandroid.shopping;
import java.util.ArrayList;
import android.app.Activity;
import android.app.SearchManager;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.SearchView;
import android.widget.SearchView.OnQueryTextListener;
import android.widget.Toast;
public class FavoriteActivity extends Activity implements OnQueryTextListener {
ListView listView;
Intent intent;
private DBAdapter mDb;
private ArrayList<Info> mInfo;
private ArrayAdapter<Info> mAdapter;
private static final int MENU_DELETE=0;
private static final int MENU_SHARE=1;
private static final int MENU_ALLDELETE=2;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.favorite_listview);
setTitle("즐겨찾기 리스트");
listView = (ListView) findViewById(R.id.favoview);
registerForContextMenu(listView);
mDb = new DBAdapter(this);
mInfo = mDb.getAllInfo();
mAdapter = new ArrayAdapter<Info>(this, android.R.layout.simple_list_item_1, mInfo);
listView.setAdapter(mAdapter);
listView.setTextFilterEnabled(true);
Toast.makeText(FavoriteActivity.this, "길게 누르면 삭제.공유할 수 있습니다." , Toast.LENGTH_SHORT).show();
listView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View v, int position, long id){
Info i = mInfo.get(position);
Toast.makeText(FavoriteActivity.this, i.getName(), Toast.LENGTH_SHORT).show();
Intent in = new Intent(Intent.ACTION_VIEW, Uri.parse(i.getAddr()));
startActivity(in);
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu){
//Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.search_view, menu);
SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
SearchView searchView = (SearchView) menu.findItem(R.id.action_search).getActionView();
searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
searchView.setSubmitButtonEnabled(true);
searchView.setOnQueryTextListener(this);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onQueryTextChange(String newText)
{
if(TextUtils.isEmpty(newText))
{
listView.clearTextFilter();
}
else
{
listView.setFilterText(newText.toString());
}
return true;
}
@Override
public boolean onQueryTextSubmit(String query)
{
return false;
}
int nPosition;
@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo){
super.onCreateContextMenu(menu, v, menuInfo);
nPosition = ((AdapterView.AdapterContextMenuInfo)menuInfo).position;
menu.add(0, MENU_DELETE, 0, "삭제");
menu.add(0, MENU_SHARE, 0, "공유");
menu.add(0, MENU_ALLDELETE, 0, "모두 삭제");
}
@Override
public boolean onContextItemSelected(MenuItem item) {
super.onContextItemSelected(item);
Info i = mInfo.get(nPosition);
switch(item.getItemId()) {
case MENU_DELETE:
mDb.deleteInfo(i.getId());
Toast.makeText(FavoriteActivity.this, "삭제되었습니다.", Toast.LENGTH_SHORT).show();
refreshList();
return true;
case MENU_SHARE:
Intent msg = new Intent(Intent.ACTION_SEND);
msg.addCategory(Intent.CATEGORY_DEFAULT);
msg.putExtra(Intent.EXTRA_SUBJECT, "너에게 추천하는 쇼핑몰이야!");
msg.putExtra(Intent.EXTRA_TEXT, i.getAddr());
msg.setType("text/plain");
startActivity(Intent.createChooser(msg, "공유"));
return true;
case MENU_ALLDELETE:
mDb.deleteAll();
Toast.makeText(FavoriteActivity.this, "모두 삭제되었습니다.", Toast.LENGTH_SHORT).show();
refreshList();
return true;
}
return false;
}
protected void onDestroy() {
mDb.close();
super.onDestroy();
}
private void refreshList() {
mInfo.clear();
mInfo.addAll(mDb.getAllInfo());
mAdapter.notifyDataSetInvalidated();
}
}
커스텀리스트뷰에 있던 리스트들을 즐겨찾기로 추가해놓으면
이 FavoriteActivity에 저장이 되는데요 저장되어있는 리스트들을
여기서 롱클릭해서 컨텍스트 메뉴로 띄워서 삭제/공유/모두삭제 기능을 추가해서 해보면 잘 되는데
여기서 Search View를 추가했습니다.. 그리고 검색아이콘을 누른다음에
롱클릭해서 리스트를 삭제하려고하면 삭제가안대요..
아정확히는 삭제는 되는데 다시 refresh()로 갱신이 안되고
뒤로 갔다가 다시 즐겨찾기로 들어와야 없어져있고..
검색아이콘 누른담에 삭제한다음에 또 다시 롱클릭해서 뭐 누를라그러면
아예 눌리지도않고 먹통이돼요 소스를 어떻게 고쳐아하나요??ㅠㅠㅠ