我需要帮助来刷新已禁用项目的ListView
。我已经阅读了一些文章,我得说我不知道如何刷新禁用的项目,因此如果你能给我一个手并发布附加所需的代码,那将非常感激。
提前致谢!
我在我的活动中有这个代码:
adapter = new CustomAdapter(PendingOrdersActitvity.this, itemsList1);
listView.setAdapter(adapter);
adapter.notifyDataSetChanged();
listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
for (int i = 0; i <itemsList1.size(); i++) {
if(i == position){
view.setEnabled(false);
view.setClickable(false);
view.setBackgroundColor(Color.parseColor("#DCDBDB"));
ItemsBean bean = new ItemsBean();
bean.setInvNo(itemsList1.get(position).getInvNo());
bean.setItemnNameDisplay(itemsList1.get(position).getItemnNameDisplay());
bean.setQuantityDisplay(itemsList1.get(position).getQuantityDisplay());
bean.setProdnum(itemsList1.get(position).getProdnum());
newlist.add(bean);
adapter.getmethod(position);
}
}
insertintodatabase(newlist);
newlist.clear();
adapter.notifyDataSetChanged();
return true;
}
});
这是我的自定义Adapter类我不知道哪里有错,但我需要帮助才能完成项目,因为我是android的新手
public class CustomAdapter extends BaseAdapter {
Context ctx;
private int pos;
LayoutInflater inflator;
ArrayList<ItemsBean> newList = new ArrayList<ItemsBean>();
ArrayList<ItemsBean> newListitems = new ArrayList<ItemsBean>();
ArrayList<String> childList = new ArrayList<String>();
ArrayList<String> qtychildList = new ArrayList<String>();
String parentobjid=null;
PendingOrdersActitvity myactivity;
public CustomAdapter(PendingOrdersActitvity kdsActitvity, ArrayList<ItemsBean> invoiceDataList) {
this.ctx = kdsActitvity;
this.newList = invoiceDataList;
this.inflator = (LayoutInflater) ctx.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
pos = -1;
}
public int getCount() {
return newList.size();
}
public void getmethod(int pos1) {
pos = pos1;
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public long getItemId(int position) {
return 0;
}
public static class ViewHolder {
TextView qty, name, childText, qtyChild;
}
@SuppressLint("NewApi") @Override
public View getView(final int position, View convertView, ViewGroup parent) {
ViewHolder holder;
String item = null, qty = null;
if (convertView == null) {
holder = new ViewHolder();
convertView = inflator.inflate(R.layout.invoicelistadapter, null);
holder.qty = (TextView) convertView.findViewById(R.id.qty);
holder.name = (TextView) convertView.findViewById(R.id.item);
holder.childText = (TextView) convertView
.findViewById(R.id.childitem);
holder.qtyChild = (TextView) convertView
.findViewById(R.id.qtychild);
convertView.setTag(holder);
} else {
if(pos!=-1 && pos==position)
{
convertView.setEnabled(false);
convertView.setClickable(false);
convertView.setBackgroundColor(Color.parseColor("#DCDBDB"));
}
holder = (ViewHolder) convertView.getTag();
}
//holder.qty.setText(String.valueOf(newList.get(position).getQuantityDisplay()));
parentobjid=newList.get(position).getParentobjectid();
if(!parentobjid.isEmpty())
{
holder.name.setText(" " +newList.get(position).getItemnNameDisplay());
holder.name.setTextColor(Color.parseColor("#CC0000"));
holder.qty.setText(" "+String.valueOf(newList.get(position).getQuantityDisplay()));
holder.qty.setTextColor(Color.parseColor("#CC0000"));
} else {
holder.name.setText(newList.get(position).getItemnNameDisplay());
holder.qty.setText(String.valueOf(newList.get(position)
.getQuantityDisplay()));
holder.name.setTextColor(Color.parseColor("#FFFFFF"));
holder.qty.setTextColor(Color.parseColor("#FFFFFF"));
}
}
}
答案 0 :(得分:0)
在listview ClickListener中调用adapter.notifyDataSetChanged()。
iframe
答案 1 :(得分:0)
ListView只是一个容器。 而不是启用单个项目,清除它并通过适配器重新创建它。
实际上,适配器只是将ListView绑定到元素的ArrayList,并在ListView中表示&#34; state&#34; ArrayList。
不要对已创建的ListView进行操作,但刷新ArrayList并且ListView也将刷新!
答案 2 :(得分:0)
使用notifydatasetchanged();
通知附加观察者基础数据已更改,反映数据集的任何视图应自行刷新