在我的应用中,我使用ListView选择要订购的项目。当我选择要订购的物品时,它会被检查并在订购页面中添加。如果我返回主页面并且如果我再次进入项目列表,则将取消选中所选项目,但选择的项目将出现在订购页面中。 应检查所选项目,直到手动删除。请帮我解决这个问题。
这是我的代码:
public View getView(final int position, View convertView, ViewGroup parent)
{
final ViewHolder holder;
if (convertView == null)
{
convertView = inflater.inflate(R.layout.selecteditemlistview, null);
holder = new ViewHolder();
holder.textViewSelectedText = (TextView)convertView.findViewById(R.id.selectedtext);
holder.price=(TextView)convertView.findViewById(R.id.selectitemprice);
holder.image=(ImageView)convertView.findViewById(R.id.selectitemimage);
holder.qty=(EditText)convertView.findViewById(R.id.selectqty);
holder.total=(TextView)convertView.findViewById(R.id.price);
holder.delete = (Button) convertView.findViewById(R.id.delete);
holder.uncheck = (CheckBox)convertView.findViewById(R.id.bcheck);
convertView.setTag(holder);
}
else
{
holder = (ViewHolder) convertView.getTag();
}
String amount=holder.qty.getText().toString();
final Double price1=Double.parseDouble(itemprice.get(position));
int qut=Integer.parseInt(holder.qty.getText().toString());
Double total=(price1*qut);
holder.textViewSelectedText.setText(arr1.get(position));
holder.price.setText(itemprice.get(position));
holder.image.setImageBitmap(itemimage.get(position));
holder.total.setText(String.valueOf(total));
holder.delete.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
arr1.remove(position);
itemimage.remove(position);
itemprice.remove(position);
// holder.uncheck.setChecked(false);
View parent = (View)v.getParent();
CheckBox chkBox = (CheckBox)parent.findViewById(R.id.bcheck);
if ((holder.arr1==true)&&(holder.uncheck.isChecked()))
{holder.uncheck.setChecked(false);
}
notifyDataSetChanged();
}
});
holder.qty.setOnFocusChangeListener(new OnFocusChangeListener() {
public void onFocusChange(View v, boolean hasFocus) {
// TODO Auto-generated method stub
if(!hasFocus)
{
int position = v.getId();
final EditText Caption = (EditText) v;
Caption.setFocusable(true);
holder.qty.setFocusable(true);
int q=Integer.parseInt(holder.qty.getText().toString());
Double result=(price1 * q);
System.out.println(result);
holder.total.setText(String.valueOf(result));
}
}
});
return convertView;
}
class ViewHolder
{
protected boolean arr1;
public CheckBox uncheck;
public Button delete;
public TextView mTextView;
TextView textViewSelectedText = null;
TextView price=null;
ImageView image=null;
EditText qty=null;
TextView total=null;
}
答案 0 :(得分:0)
我知道的解决方案是手动的。您必须将所选项目列表传递给ListView。
您的主要活动
Intent intent = new Intent(this, YourListViewActivity.class);
// parcelables or a List of indexes (your choice but I prefer Parcelables)
// I assume that you have your selection stored in a List to work with it
// make SomeKey as a constant
intent.putParcelableArrayListExtra("SomeKey", listOfYourObjectsAsParcelables);
startActivityForResult(intent, requestCode);
选择活动 - 假设它扩展了ListActivity
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// load selection from the intent
List<YourParcelableObject> parcelables = getIntent().getParcelableArrayListExtra("SomeKey");
if (parcelables != null) {
// convert to YourObject
List<YourObject> selectedObjects = convert(parcelables);
// iterate over the list and check items
for (int i = 0; i < getListView().getAdapter().getCount(); i++) {
YourObject object = (YourObject) getListView().getAdapter().getItem(i);
if (selectedObjects.contains(object)) {
getListView().setItemChecked(i, true);
}
}
}
}
请注意,这只是一个片段,我没有测试它,但它应该给你一个想法。