到目前为止,我搜索的是通过将按钮放在每一行来获取列表视图数据,但我想要实现的是通过将按钮放在列表外部来选择列表视图内容。
我创建了一个可编辑的列表视图,用户将在其中输入值,该值将乘以列表中已存在的列之一,结果将在另一个文本视图中设置。
现在单击按钮(在列表下方给出),我想执行以下两项操作。
我想只获取用户在文本框中输入值的那些行。以及
listview上方给出的editTexts(名称和地址)的值。并将它们保存到sqlite。
我不知道如何做到这一点,我们将非常感谢任何帮助。对不起,如果我不清楚。 下面是我的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");
}
}
}
});
答案 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");
}
}
希望这有帮助