2016-10-26 3 views
0

Мне нужна помощь для обновления 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; 
    } 

}); 

Это мой пользовательский класс адаптера я не знаю, где это ошибка, но мне нужна помощь, чтобы завершить проект, как я новичок в андроид

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

Покажите свой 'CustomAdapter' код тоже. –

+0

will u plzz help me Mr Neeraj – joy

+0

Что произойдет, если вы нажмете на строку? –

ответ

0

call adapter.notifyDataSetChanged() внутри списка просмотра ClickListener.

listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() { 

     @Override 
     public boolean onItemLongClick(AdapterView<?> parent, View view, 
     int position, long id) { 


     // TODO Auto-generated method stub 
      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; 



     } 

     }); 
+0

его не сработало @sasi – joy

+0

затем проверить элементыList1 значения – sasikumar

+0

sry я не понял wt u сказал – joy

0

ListView - это просто контейнер. Вместо включения отдельных элементов очистите его и заново создайте его через адаптер.

Фактически адаптер просто связывает ListView с ArrayList элементов и представляет в ListView «состояние» массива ArrayList.

Не работайте с ListView уже созданным, но обновите ArrayList, и ListView также будет обновлен!

+0

нет его проекта я хочу включить его, чтобы не очистить элементы – joy

0

использование notifydatasetchanged();

Уведомляет присоединенные наблюдателей, что основные данные были изменены, и любые View отражающие набор данных должен освежить себя

+0

я пробовал, но он не работает – joy

Смежные вопросы