如何使用列表外的按钮获取listview的内容

时间:2015-07-14 18:22:59

标签: android listview android-listview

到目前为止,我搜索的是通过将按钮放在每一行来获取列表视图数据,但我想要实现的是通过将按钮放在列表外部来选择列表视图内容。

我创建了一个可编辑的列表视图,用户将在其中输入值,该值将乘以列表中已存在的列之一,结果将在另一个文本视图中设置。

现在单击按钮(在列表下方给出),我想执行以下两项操作。

  1. 我想只获取用户在文本框中输入值的那些行。以及

  2. listview上方给出的editTexts(名称和地址)的值。并将它们保存到sqlite。

  3. 我不知道如何做到这一点,我们将非常感谢任何帮助。对不起,如果我不清楚。 下面是我的listview适配器的代码

    @Override
    public View getView( final int position, View convertView, ViewGroup parent)   {        
      final   ViewHolder holder;
      if (convertView == null) {
            convertView = inflater.inflate(R.layout.productslistviewadapter, parent, false);
    
            holder = new ViewHolder();
            holder.tvdrCode = (TextView) convertView.findViewById(R.id.tvname);
            holder.tvDrName = (TextView) convertView.findViewById(R.id.tvprodpack);
            holder.tvterrcode= (TextView) convertView.findViewById(R.id.textView3);
            holder.caption = (EditText)convertView.findViewById(R.id.editText1);
            holder.tvValue = (TextView) convertView.findViewById(R.id.value);
            holder.tvValue.setVisibility(View.GONE);
            convertView.setTag(holder);
    
        } 
     else {
            holder = (ViewHolder) convertView.getTag();
        }
    
        Products p = prodList.get(position);
        holder.tvdrCode.setText(p.getDocCode());
        holder.tvDrName.setText(p.getDocName());
        holder.tvterrcode.setText(p.getAdr());
    
        //for editText
        holder.caption.setTag(position);
        holder.caption.setText(p.getCaption());
        int tag_position=(Integer) holder.caption.getTag();
        holder.caption.setId(tag_position); 
    
        holder.caption.setOnFocusChangeListener(new View.OnFocusChangeListener() {
            public void onFocusChange(View v, boolean hasFocus) {
               if (!hasFocus) {
                   /*
                 * When focus is lost save the entered value for
                 * later use
                 */
                   int position2; 
                   position2 = holder.caption.getId();
                   position2 = holder.tvValue.getId();
                   final EditText Caption = (EditText) holder.caption;
                   final TextView TvValue = (TextView) holder.tvValue;
    
                   if(Caption.getText().toString().length()>0)
                     {
                       prodList.get(position2).setCaption(Caption.getText().toString());
    
                       String prodpack = prodList.get(position).getDocName().toString();
                       String prodname = prodList.get(position).getDocCode().toString();
                       String quantity = prodList.get(position2).getCaption()
    
                       int  value = Integer.parseInt(prodpack) * Integer.parseInt(quantity);   
                       holder.tvValue.setText(Integer.toString(value)); 
                       holder.tvValue.setVisibility(View.VISIBLE);
    
                   }  
                   else{
                        Log.e("enter some value", "yes");
                   }
    
                 }
            }
        });     
    

1 个答案:

答案 0 :(得分:1)

点击按钮

,尝试下面的代码段
for (int i = 0; i < listView.getAdapter().getCount(); i++) {
            Products pold = (Products) listView.getAdapter().getItem(i);
            Products pnew = prodlist.get(i);         
            if(pold.getCaption() !=null)
            {
             if(pold.getCaption() != pnew.getCaption().toString())
             {
              //Call sqlite save here
              Log.d("yes", "yes");
             }
             else {
              Log.d("no", "no");
             }   
            }

希望这有帮助