我正在尝试从适配器中删除带有来自适配器的项目(文本)的图标。我知道这看起来很简单,我做到了,但仍然有一些错误。看起来我删除它们的项目很奇怪,列表中的第一个图标和最后一个图标相同。这是代码:
ListRssLinkAndTitle=(ArrayList)dbAdpter.getWantedItemsList(this,"RssTitle","link","Rtl","image");//get wanted items from db
for (int j=0;j<ListRssLinkAndTitle.size();j++)
listKeys.add(ListRssLinkAndTitle.get(j).title);
for (int i=0;i<ListRssLinkAndTitle.size();i++)
Icon.add(ListRssLinkAndTitle.get(i).icon);
listAdapter = new ListRssAdpter(this, R.layout.titlesrss, listKeys,Icon);
lv.setAdapter(listAdapter);
lv.setOnItemClickListener(new OnItemClickListener()
{
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
if (0<dbAdpter.deleteRssItem(ListRssLinkAndTitle.get(position).title,ListRssLinkAndTitle.get(position).url))
{
ListRssLinkAndTitle.remove(position);
listAdapter.items.remove(position);
listAdapter.FavIconList.remove(position);
listAdapter.notifyDataSetChanged();
}
else
Toast.makeText(getApplicationContext(), getResources().getString(R.string.operationFaild),0).show();
}
}
});
和适配器:
public class ListRssAdpter extends ArrayAdapter {
private Context mContext;
private int id;
public List<String> items;
public List<byte[]> FavIconList;
public boolean iconRemove=false;
public int IconHigh=-1;// if -1 not in use
//constractor for fav icon
public ListRssAdpter(Context context, int textViewResourceId, List<String> list,List<byte[]> icon) {
super(context, textViewResourceId, list);
mContext = context;
id = textViewResourceId;
items = list;
this.FavIconList=icon;
}
public View getView(int position, View v, ViewGroup parent) {
View mView = v;
if (mView==null) {
LayoutInflater vi = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
mView = vi.inflate(id, null);
}
ImageView removeIcon = (ImageView)mView.findViewById(R.id.iconremove);
ImageView favIcon = (ImageView)mView.findViewById(R.id.iconfav);
if (iconRemove)
{
removeIcon.setVisibility(View.VISIBLE);
favIcon.setVisibility(favIcon.GONE);
}
else
{
if (FavIconList.get(position)!=null)
{
Bitmap bitmap = BitmapFactory.decodeByteArray(FavIconList.get(position), 0, FavIconList.get(position).length);
favIcon.setImageBitmap(bitmap);
}
else BitmapFactory.decodeResource(mView.getContext().getResources(),R.drawable.rss);
removeIcon.setVisibility(removeIcon.GONE);
favIcon.setVisibility(favIcon.VISIBLE);
}
TextView tx = (TextView) mView.findViewById(R.id.textView);
//if this view is on main screen
if (tx == null) {
tx = ((TextView) mView);
}
if (this.IconHigh!=-1)
tx.setHeight(this.IconHigh);
//this.setTextSize(TypedValue.COMPLEX_UNIT_PX, size);
tx.setText(items.get(position));
return mView;
}
}
如果您找不到逻辑错误,也许您可以给我一个简单的示例工作代码:)