我有一個列表視圖,我正在使用swipe list view庫向列表視圖添加滑動功能。最初,如果我長時間點擊列表項目,該列表項目將被添加到我的收藏夾中。我想通過點擊菜單項來實現添加到收藏夾的過程,而不是長按。但我不知道如何實現它無法弄清楚如何在列表視圖中添加收藏夾
我對onitemlongclick
public boolean onItemLongClick(AdapterView<?> arg0, View view, int position, long arg3)
{
ImageView fvrtebutton = (ImageView) view.findViewById(R.id.favbtn);
String tag = fvrtebutton.getTag().toString();
if (tag.equalsIgnoreCase("no")) {
shrdPreference.addFavorite(InterActivity.this, codelist.get(position));
Toast.makeText(InterActivity.this, getString(R.string.fav_added),
Toast.LENGTH_SHORT).show();
fvrtebutton.setTag("yes");
fvrtebutton.setImageResource(R.drawable.favorite);
} else {
shrdPreference.removeFavorite(InterActivity.this, codelist.get(position));
fvrtebutton.setTag("no");
fvrtebutton.setImageResource(R.drawable.unfavorite);
Toast.makeText(InterActivity.this,
getString(R.string.fav_removed),
Toast.LENGTH_SHORT).show();
}
Log.v("long clicked", "pos: " + position);
return false;
}
我刷卡菜單項,其代碼的onclick
SwipeMenuCreator creator = new SwipeMenuCreator() {
@Override
public void create(SwipeMenu menu) {
// create "open" item
SwipeMenuItem openItem = new SwipeMenuItem(InterActivity.this);
// set item background
openItem.setBackground(new ColorDrawable(Color.rgb(0xC9, 0xC9,
0xCE)));
// set item width
openItem.setWidth(dp2px(90));
// set item title
openItem.setTitle("Open");
// set item title fontsize
openItem.setTitleSize(18);
// set item title font color
openItem.setTitleColor(Color.WHITE);
// add to menu
menu.addMenuItem(openItem);
// create "delete" item
SwipeMenuItem favoriteItem = new SwipeMenuItem(InterActivity.this);
// set item background
favoriteItem.setBackground(new ColorDrawable(Color.rgb(0xF9,
0x3F, 0x25)));
// set item width
favoriteItem.setWidth(dp2px(90));
// set a icon
favoriteItem.setIcon(R.drawable.unfavorite);
// add to menu
menu.addMenuItem(favoriteItem);
}
};
// set creator
listview.setMenuCreator(creator);
listview.setOnMenuItemClickListener(new SwipeMenuListView.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(int position, SwipeMenu menu, int index) {
//ApplicationInfo item = mAppList.get(position);
switch (index) {
case 0:
// open
//open(item);
break;
case 1:
// favorite
if(favoriteItem.getIcon().equals(getResources().getDrawable(R.drawable.unfavorite))){
Toast.makeText(InterActivity.this, "yes", Toast.LENGTH_SHORT).show();
}
break;
}
return false;
}
});
不能適用getTag()滑動菜單項 甚至嘗試使用equals()比較drawable,但得到nullpointerexception
getview(我的適配器)
public View getView(final int position, View view, ViewGroup parent)
{
final ViewHolder holder;
if(view == null){
holder = new ViewHolder();
view = inflater.inflate(R.layout.beg_list_item,null);
holder.listHeading = (TextView) view.findViewById(R.id.beg_list_itemTextView);
holder.listHash = (TextView) view.findViewById(R.id.listview_hashtags);
holder.alphabetList = (ImageView) view.findViewById(R.id.beg_list_itemImageView);
holder.favariteImage = (ImageView) view.findViewById(R.id.favbtn);
view.setTag(holder);
}else{
holder = (ViewHolder) view.getTag();
}
CodeList codes = (CodeList) getItem(position);
holder.listHeading.setText(codeList.get(position).getListHeading());
holder.listHash.setText(codeList.get(position).getListHashText());
imageLoader.DisplayImage(codeList.get(position).getAlphabetimg(),
holder.alphabetList);
if (checkFavoriteItem(codes)) {
holder.favariteImage.setImageResource(R.drawable.favorite);
holder.favariteImage.setTag("yes");
} else {
holder.favariteImage.setImageResource(R.drawable.unfavorite);
holder.favariteImage.setTag("no");
}
return view;
}
public boolean checkFavoriteItem(CodeList checkCodes) {
boolean check = false;
List<CodeList> favorites = shrdprfrnce.getFavorites(context);
if (favorites != null) {
for (CodeList codes : favorites) {
if (codes.equals(checkCodes)) {
check = true;
break;
}
}
}
return check;
}
這是我試圖
public boolean onMenuItemClick(int position, SwipeMenu menu, int index) {
//ApplicationInfo item = mAppList.get(position);
switch (index) {
case 0:
// open
//open(item);
break;
case 1:
// favorite
CodeList codes = (CodeList) getItem(position);
ImageView fvrtebutton= (ImageView) findViewById(R.id.favbtn);
if (checkFavoriteItem(codes)){
shrdPreference.removeFavorite(InterActivity.this, codelist.get(position));
fvrtebutton.setTag("no");
favoriteItem.setIcon(R.drawable.unfavorite);
fvrtebutton.setImageResource(R.drawable.unfavorite);
Toast.makeText(InterActivity.this,
getString(R.string.fav_removed),
Toast.LENGTH_SHORT).show();
}else{
shrdPreference.addFavorite(InterActivity.this, codelist.get(position));
Toast.makeText(InterActivity.this, getString(R.string.fav_added),
Toast.LENGTH_SHORT).show();
fvrtebutton.setTag("yes");
fvrtebutton.setImageResource(R.drawable.favorite);
favoriteItem.setIcon(R.drawable.favorite);
}
break;
}
return false;
}
private boolean checkFavoriteItem(CodeList checkCodes) {
boolean check = false;
List<CodeList> favorites = shrdPreference.getFavorites(InterActivity.this);
if (favorites != null) {
for (CodeList codes : favorites) {
if (codes.equals(checkCodes)) {
check = true;
break;
}
}
}
return check;
}
private Object getItem(int position)
{
return codelist.get(position);
}
});
我的管線230的方法
favoriteItem.setIcon(R.drawable.favorite)
我的logcat
13 15:46:21.801 4689 4689ËAndroidRuntime致命異常:主 01-13 15:46:21.801 4689 4689ÊAndroidRuntime過程: com.enlightenme.pac,PID:4689 01-13 15 :46:21.801 4689 4689 E AndroidRuntime java.lang.NullPointerException:試圖調用虛函數'void com.baoyz.swipemenulistview.SwipeMenuItem.setIcon(int)'null object reference 01-13 15:46:21.801 4689 4689 E AndroidRuntime在 com.enlightenme.pac.InterActivity $ RemoteDataTask $ 100000001.onMenuItemClick(InterActivity.java:230) 01-13 15:46:21.801 4689 4689 E AndroidRu n時間 在com.baoyz.swipemenulistview.SwipeMenuListView $ 100000000.onItemClick(SwipeMenuListView.java:78) 01-13 15:46:21.801 4689 4689ËAndroidRuntime 在com.baoyz.swipemenulistview.SwipeMenuView.onClick(SwipeMenuView.java:85 ) 01-13 15:46:21.801 4689 4689 E AndroidRuntime at android.view.View.performClick(View.java:4780)01-13 15:46:21.801 4689 4689 E AndroidRuntime在 android.view.View $ PerformClick.run(View.java:19866)01-13 15:46:21.801 4689 4689 E AndroidRuntime在 android.os.Handler.handleCallback(Handler.java:739)01-13 15:46:21.801 4689 4689 E AndroidRuntime在 android.os.Handler.dispatchMessage(Handler.java:95)01-13 15: 46:21.801 4689 4689 E AndroidRuntime在 android.os.Looper.loop(Looper.java:135)01-13 15:46:21.801 4689 4689 E AndroidRuntime at android.app.ActivityThread.main(ActivityThread。java:5254)01-13 15:46:21.801 4689 4689 E AndroidRuntime at java.lang.reflect.Method.invoke(Native Method)01-13 15:46:21.801 4689 4689 E AndroidRuntime java.lang .reflect.Method.invoke(Method.java:372)01-13 15:46:21.801 4689 4689 E AndroidRuntime com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:903) 01 -13 15:46:21.801 4689 4689 E AndroidRuntime at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)01-13 15:46:21.796 4689 4689 D AndroidRuntime 關閉VM 01-13 15:46:21.801 4689 4689 E AndroidRunti13 15:46:21.801 4689 4689 E AndroidRuntime 嚴重例外:主01-13 15:46:21.801 4689 4689 E AndroidRuntime進程: com.enlightenme.pac,PID:4689 01-13 15:46:21.801 4689 4689 E AndroidRuntime java.lang.NullPointerException:試圖調用虛擬方法'void com.baoyz.swipemenulistview.SwipeMenuItem.setIcon (int)'null object reference 01-13 15:46:21.801 4689 4689 E AndroidRuntime at com.enlightenme.pac.InterActivity $ RemoteDataTask $ 100000001.onMenuItemClick(InterActivity.java:230) 01-13 15:46:21.801 4689 4689 E AndroidRuntime at com.baoyz.swipemenulistview.SwipeMenuListView $ 100000000.onItemClick(SwipeMenuListView.java :78) 01-13 15:46:21.801 4689 4689 E AndroidRuntime at com.baoyz.swipemenulistview.SwipeMenuView.onClick(SwipeMenuView.java:85) 01-13 15:46:21.801 4689 4689 E AndroidRuntime at android .view.View.performClick(View.java:4780)01-13 15:46:21.801 4689 4689 E AndroidRuntime在 android.view.View $ PerformClick.run(View.java:19866)01-13 15:46:21.801 4689 4689 E AndroidRuntime在 android.os.Handler.handleCallback(Handler.java:739)01 -13 15:46:21.801 4689 4689 E AndroidRuntime在 android.os.Handler.dispatchMessage(Handler.java:95)01-13 15:46:21.801 4689 4689 E AndroidRuntime在 android.os.Looper.loop (Looper.java:135)01-13 15:46:21.801 4689 4689 E AndroidRuntime at android.app.ActivityThread.main(ActivityThread.java:5254)01-13 15:46:21.801 4689 4689 E AndroidRuntime at java.lang.reflect.Method.invoke(Native Method)01-13 15:46: 21.801 4689 4689ËAndroidRuntime在 java.lang.reflect.Method.invoke(Method.java:372)01-13 15:46:21.801 4689 4689ËAndroidRuntime在 com.android.internal.os.ZygoteInit $ MethodAndArgsCaller .run(ZygoteInit.java:903) 01-13 15:46:21.801 4689 4689 E AndroidRuntime at com.android.internal.os.ZygoteInit 。主要(ZygoteInit.java:698)01-13 15:46:21.796 4689 4689 d AndroidRuntime 關閉VM 01-13 15:當你正在使用
checkFavoriteItem()
21.801 4689 4689ËAndroidRunti
你這是在'tag'存儲?我的意思是當你使用'setTag()'時你存儲了什麼值? –
@RRR SetTag滑動菜單項或fvrtbtn ?.沒有理解你的問題 – user5524159
setTag to fvrtebutton –