如何刷新禁用的ListView

时间:2016-10-26 06:33:14

标签: android listview

我需要帮助来刷新已禁用项目的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"));
        }
    }
}

3 个答案:

答案 0 :(得分:0)

在listview ClickListener中调用adapter.notifyDataSetChanged()。

iframe

答案 1 :(得分:0)

ListView只是一个容器。 而不是启用单个项目,清除它并通过适配器重新创建它。

实际上,适配器只是将ListView绑定到元素的ArrayList,并在ListView中表示&#34; state&#34; ArrayList。

不要对已创建的ListView进行操作,但刷新ArrayList并且ListView也将刷新!

答案 2 :(得分:0)

使用notifydatasetchanged();

通知附加观察者基础数据已更改,反映数据集的任何视图应自行刷新