[英]Got error in getView() in Adapter when i trying to put gridview in fragment
[英]How can I realize delete method in Gridview?When the adapter is not in fragment class
我在將適配器類編寫為片段的內部類之前就做了。 但是我想知道是否有可能將適配器編寫為一個獨立的類?
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView == null) {
convertView = LayoutInflater.from(getContext()).inflate(R.layout.item_grid, null);
holder = new ViewHolder(convertView);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.build(getItem(position).toString());
deleteView = convertView.findViewById(R.id.delete_markView);
deleteView.setVisibility(isShowDelete ? View.VISIBLE : View.GONE);
deleteView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
removeItemInShared(items.get(position));
items.remove(position);
notifyDataSetChanged();
notifyDataSetInvalidated();
Toast.makeText(getContext(), "Deleted", Toast.LENGTH_SHORT).show();
}
});
return convertView;
}
google的所有搜索結果都是adapter.notifyDataSetChanged();
但是適配器不在適配器類中。 有什么辦法嗎?
另一個notifyDataSetChanged()令人擔憂。
GridViewAdapter.java
public void setIsShowDelete(boolean isShowDelete) {
this.isShowDelete = isShowDelete;
notifyDataSetChanged();
}
由片段g_adapter.setIsShowDelete(false);調用
是的,可以將適配器寫為其他類。您要做的就是為適配器類創建一個構造函數,並將數組列表從片段傳遞給適配器類構造函數作為參數。
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
//your arraylist here
MyAdapter myadp=new MyAdpater(arraylilst);
listview.setAdapter(myadp);
myadp.notifyDataSetChanged();
return super.onCreateView(inflater, container, savedInstanceState);
}
在您的適配器類中:
public class MyAdapter extends BaseAdapter
{
ArrayList<String> items;
public void Myadapter(ArrayList<String> items)
{
this.items=items;
}
//override methods
@Override
public View getView(final int position, View convertView, ViewGroup
parent) {
ViewHolder holder;
if (convertView == null) {
convertView =
LayoutInflater.from(getContext()).inflate(R.layout.item_grid, null);
holder = new ViewHolder(convertView);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.build(getItem(position).toString());
deleteView = convertView.findViewById(R.id.delete_markView);
deleteView.setVisibility(isShowDelete ? View.VISIBLE : View.GONE);
deleteView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
removeItemInShared(items.get(position));
items.remove(position);
Toast.makeText(getContext(), "Deleted", Toast.LENGTH_SHORT).show();
}
});
return convertView;
}
希望這會有所幫助。快樂編碼!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.